| 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; | 
|  |