| Index: Source/bindings/v8/WrapperTypeInfo.h
|
| diff --git a/Source/bindings/v8/WrapperTypeInfo.h b/Source/bindings/v8/WrapperTypeInfo.h
|
| index 3839e5b2dcf7f84de1bb6d69aa50f91f7b4c50ed..27435df06b18fb600ad91c5656fea3ab5f43139a 100644
|
| --- a/Source/bindings/v8/WrapperTypeInfo.h
|
| +++ b/Source/bindings/v8/WrapperTypeInfo.h
|
| @@ -60,7 +60,7 @@ namespace WebCore {
|
| typedef void (*DerefObjectFunction)(void*);
|
| typedef ActiveDOMObject* (*ToActiveDOMObjectFunction)(v8::Handle<v8::Object>);
|
| typedef EventTarget* (*ToEventTargetFunction)(v8::Handle<v8::Object>);
|
| - typedef void* (*OpaqueRootForGC)(void*, v8::Isolate*);
|
| + typedef void (*ResolveWrapperReachabilityFunction)(void*, const v8::Persistent<v8::Object>& wrapper, v8::Isolate*);
|
| typedef void (*InstallPerContextPrototypePropertiesFunction)(v8::Handle<v8::Object>, v8::Isolate*);
|
|
|
| enum WrapperTypePrototype {
|
| @@ -68,6 +68,11 @@ namespace WebCore {
|
| WrapperTypeErrorPrototype
|
| };
|
|
|
| + inline void setObjectGroup(void* object, const v8::Persistent<v8::Object>& wrapper, v8::Isolate* isolate)
|
| + {
|
| + isolate->SetObjectGroupId(reinterpret_cast<const v8::Persistent<v8::Value>&>(wrapper), v8::UniqueId(reinterpret_cast<intptr_t>(object)));
|
| + }
|
| +
|
| // This struct provides a way to store a bunch of information that is helpful when unwrapping
|
| // v8 objects. Each v8 bindings class has exactly one static WrapperTypeInfo member, so
|
| // comparing pointers is a safe way to determine if types match.
|
| @@ -122,18 +127,19 @@ namespace WebCore {
|
| return toEventTargetFunction(object);
|
| }
|
|
|
| - void* opaqueRootForGC(void* object, v8::Isolate* isolate)
|
| + void resolveWrapperReachability(void* object, const v8::Persistent<v8::Object>& wrapper, v8::Isolate* isolate)
|
| {
|
| - if (!opaqueRootForGCFunction)
|
| - return object;
|
| - return opaqueRootForGCFunction(object, isolate);
|
| + if (!resolveWrapperReachabilityFunction)
|
| + setObjectGroup(object, wrapper, isolate);
|
| + else
|
| + resolveWrapperReachabilityFunction(object, wrapper, isolate);
|
| }
|
|
|
| const GetTemplateFunction getTemplateFunction;
|
| const DerefObjectFunction derefObjectFunction;
|
| const ToActiveDOMObjectFunction toActiveDOMObjectFunction;
|
| const ToEventTargetFunction toEventTargetFunction;
|
| - const OpaqueRootForGC opaqueRootForGCFunction;
|
| + const ResolveWrapperReachabilityFunction resolveWrapperReachabilityFunction;
|
| const InstallPerContextPrototypePropertiesFunction installPerContextPrototypePropertiesFunction;
|
| const WrapperTypeInfo* parentClass;
|
| const WrapperTypePrototype wrapperTypePrototype;
|
|
|