Index: Source/bindings/v8/V8DOMWrapper.h |
diff --git a/Source/bindings/v8/V8DOMWrapper.h b/Source/bindings/v8/V8DOMWrapper.h |
index adc97b7e3def75eb43946cddc7a2ec868f96c8ba..a8aee01666cb3a2aaf11d2b7788d709f6c43ce74 100644 |
--- a/Source/bindings/v8/V8DOMWrapper.h |
+++ b/Source/bindings/v8/V8DOMWrapper.h |
@@ -87,10 +87,17 @@ struct WrapperTypeInfo; |
#else |
ASSERT(wrapperTypeInfo->gcType == RefCountedObject || wrapperTypeInfo->gcType == WillBeGarbageCollectedObject); |
#endif |
+ |
+ // Clear out the last internal field, which is assumed to contain a valid persistent pointer value. |
+ if (wrapperTypeInfo->gcType == GarbageCollectedObject) { |
+ wrapper->SetAlignedPointerInInternalField(wrapper->InternalFieldCount() - 1, 0); |
+ } else if (wrapperTypeInfo->gcType == WillBeGarbageCollectedObject) { |
+#if ENABLE(OILPAN) |
+ wrapper->SetAlignedPointerInInternalField(wrapper->InternalFieldCount() - 1, 0); |
+#endif |
+ } |
wrapper->SetAlignedPointerInInternalField(v8DOMWrapperObjectIndex, object); |
wrapper->SetAlignedPointerInInternalField(v8DOMWrapperTypeIndex, const_cast<WrapperTypeInfo*>(wrapperTypeInfo)); |
- // Clear out the last internal field, which is assumed to contain a valid persistent pointer value. |
- wrapper->SetAlignedPointerInInternalField(wrapper->InternalFieldCount() - 1, 0); |
} |
inline void V8DOMWrapper::setNativeInfoWithPersistentHandle(v8::Handle<v8::Object> wrapper, const WrapperTypeInfo* wrapperTypeInfo, void* object, PersistentNode* handle) |