| Index: Source/bindings/core/v8/WrapperTypeInfo.h
|
| diff --git a/Source/bindings/core/v8/WrapperTypeInfo.h b/Source/bindings/core/v8/WrapperTypeInfo.h
|
| index 9019c91037a2af47fa38417dc74fc3a023cb81b0..f912abbeb7957bf4eeb48a756fb5ea59e584702e 100644
|
| --- a/Source/bindings/core/v8/WrapperTypeInfo.h
|
| +++ b/Source/bindings/core/v8/WrapperTypeInfo.h
|
| @@ -41,6 +41,7 @@ namespace blink {
|
| class ActiveDOMObject;
|
| class EventTarget;
|
| class Node;
|
| +class ScriptWrappableBase;
|
|
|
| static const int v8DOMWrapperTypeIndex = static_cast<int>(gin::kWrapperInfoIndex);
|
| static const int v8DOMWrapperObjectIndex = static_cast<int>(gin::kEncodedValueIndex);
|
| @@ -52,10 +53,10 @@ static const uint16_t v8DOMNodeClassId = 1;
|
| static const uint16_t v8DOMObjectClassId = 2;
|
|
|
| typedef v8::Handle<v8::FunctionTemplate> (*DomTemplateFunction)(v8::Isolate*);
|
| -typedef void (*DerefObjectFunction)(void*);
|
| +typedef void (*DerefObjectFunction)(ScriptWrappableBase* internalPointer);
|
| typedef ActiveDOMObject* (*ToActiveDOMObjectFunction)(v8::Handle<v8::Object>);
|
| typedef EventTarget* (*ToEventTargetFunction)(v8::Handle<v8::Object>);
|
| -typedef void (*ResolveWrapperReachabilityFunction)(void*, const v8::Persistent<v8::Object>&, v8::Isolate*);
|
| +typedef void (*ResolveWrapperReachabilityFunction)(ScriptWrappableBase* internalPointer, const v8::Persistent<v8::Object>&, v8::Isolate*);
|
| typedef void (*InstallPerContextEnabledPrototypePropertiesFunction)(v8::Handle<v8::Object>, v8::Isolate*);
|
|
|
| enum WrapperTypePrototype {
|
| @@ -69,9 +70,9 @@ enum GCType {
|
| RefCountedObject,
|
| };
|
|
|
| -inline void setObjectGroup(void* object, const v8::Persistent<v8::Object>& wrapper, v8::Isolate* isolate)
|
| +inline void setObjectGroup(ScriptWrappableBase* internalPointer, const v8::Persistent<v8::Object>& wrapper, v8::Isolate* isolate)
|
| {
|
| - isolate->SetObjectGroupId(wrapper, v8::UniqueId(reinterpret_cast<intptr_t>(object)));
|
| + isolate->SetObjectGroupId(wrapper, v8::UniqueId(reinterpret_cast<intptr_t>(internalPointer)));
|
| }
|
|
|
| // This struct provides a way to store a bunch of information that is helpful when unwrapping
|
| @@ -125,12 +126,12 @@ struct WrapperTypeInfo {
|
| return toEventTargetFunction(object);
|
| }
|
|
|
| - void visitDOMWrapper(void* object, const v8::Persistent<v8::Object>& wrapper, v8::Isolate* isolate) const
|
| + void visitDOMWrapper(ScriptWrappableBase* internalPointer, const v8::Persistent<v8::Object>& wrapper, v8::Isolate* isolate) const
|
| {
|
| if (!visitDOMWrapperFunction)
|
| - setObjectGroup(object, wrapper, isolate);
|
| + setObjectGroup(internalPointer, wrapper, isolate);
|
| else
|
| - visitDOMWrapperFunction(object, wrapper, isolate);
|
| + visitDOMWrapperFunction(internalPointer, wrapper, isolate);
|
| }
|
|
|
| // This field must be the first member of the struct WrapperTypeInfo. This is also checked by a COMPILE_ASSERT() below.
|
| @@ -166,14 +167,9 @@ inline T* getInternalField(v8::Handle<v8::Object> wrapper)
|
| return static_cast<T*>(wrapper->GetAlignedPointerFromInternalField(offset));
|
| }
|
|
|
| -inline void* toNative(const v8::Persistent<v8::Object>& wrapper)
|
| +inline ScriptWrappableBase* toInternalPointer(v8::Handle<v8::Object> wrapper)
|
| {
|
| - return getInternalField<void, v8DOMWrapperObjectIndex>(wrapper);
|
| -}
|
| -
|
| -inline void* toNative(v8::Handle<v8::Object> wrapper)
|
| -{
|
| - return getInternalField<void, v8DOMWrapperObjectIndex>(wrapper);
|
| + return getInternalField<ScriptWrappableBase, v8DOMWrapperObjectIndex>(wrapper);
|
| }
|
|
|
| inline const WrapperTypeInfo* toWrapperTypeInfo(const v8::Persistent<v8::Object>& wrapper)
|
| @@ -208,11 +204,11 @@ inline void releaseObject(v8::Handle<v8::Object> wrapper)
|
| delete handle;
|
| #else
|
| ASSERT(typeInfo->derefObjectFunction);
|
| - typeInfo->derefObjectFunction(toNative(wrapper));
|
| + typeInfo->derefObjectFunction(toInternalPointer(wrapper));
|
| #endif
|
| } else {
|
| ASSERT(typeInfo->derefObjectFunction);
|
| - typeInfo->derefObjectFunction(toNative(wrapper));
|
| + typeInfo->derefObjectFunction(toInternalPointer(wrapper));
|
| }
|
| }
|
|
|
|
|