Index: Source/bindings/v8/WrapperTypeInfo.h |
diff --git a/Source/bindings/v8/WrapperTypeInfo.h b/Source/bindings/v8/WrapperTypeInfo.h |
index 9b7a3aa2b0ab8adc37ef9b1ad264df20eeab8825..97d1dd0460aff093b85fe35ab35fea5a4817dd65 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>&, v8::Isolate*); |
typedef void (*InstallPerContextEnabledPrototypePropertiesFunction)(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(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) const |
+ void resolveWrapperReachability(void* object, const v8::Persistent<v8::Object>& wrapper, v8::Isolate* isolate) const |
{ |
- 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 InstallPerContextEnabledPrototypePropertiesFunction installPerContextEnabledPrototypePropertiesFunction; |
const WrapperTypeInfo* parentClass; |
const WrapperTypePrototype wrapperTypePrototype; |