Diff
Modified: trunk/Source/WebCore/ChangeLog (111812 => 111813)
--- trunk/Source/WebCore/ChangeLog 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/ChangeLog 2012-03-23 02:38:05 UTC (rev 111813)
@@ -1,3 +1,69 @@
+2012-03-22 Adam Klein <[email protected]>
+
+ [v8] wrapSlow methods should ref underlying object before creating wrapper
+ https://bugs.webkit.org/show_bug.cgi?id=81919
+
+ Reviewed by Adam Barth.
+
+ Because instatiating the wrapper can trigger GC, it's important that
+ wrapSlow() hold a reference to an object when creating a wrapper for
+ that object. Once the V8 wrapper exists and is associated with the object,
+ the reference can be handed off (via leakRef) to be handled by the normal
+ binding code logic (where derefObject is called if the handle is GCed).
+
+ Binding tests have been updated to reflect this change.
+
+ Testing the change directly is hard. Any test landed today would only
+ be a valid test until V8's logic about when to GC changes, at which point
+ it would become dead weight. So I don't think it's worth landing a
+ layout test along with this.
+
+ * bindings/scripts/CodeGeneratorV8.pm:
+ (GenerateHeader): Make wrapSlow take a PassRefPtr for RefCounted objects.
+ (GenerateToV8Converters): Get rid of the explicit call to ref() and
+ instead call leakRef() when adding a RefCounted object to the DOM map.
+ (GetPassRefPtrType): Helper to generate "PassRefPtr<T>", or "PassRefPtr<T<U> >" as appropriate.
+ * bindings/scripts/test/V8/V8Float64Array.cpp:
+ (WebCore::V8Float64Array::wrapSlow):
+ * bindings/scripts/test/V8/V8Float64Array.h:
+ (V8Float64Array):
+ * bindings/scripts/test/V8/V8TestActiveDOMObject.cpp:
+ (WebCore::V8TestActiveDOMObject::wrapSlow):
+ * bindings/scripts/test/V8/V8TestActiveDOMObject.h:
+ (V8TestActiveDOMObject):
+ * bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp:
+ (WebCore::V8TestCustomNamedGetter::wrapSlow):
+ * bindings/scripts/test/V8/V8TestCustomNamedGetter.h:
+ (V8TestCustomNamedGetter):
+ * bindings/scripts/test/V8/V8TestEventConstructor.cpp:
+ (WebCore::V8TestEventConstructor::wrapSlow):
+ * bindings/scripts/test/V8/V8TestEventConstructor.h:
+ (V8TestEventConstructor):
+ * bindings/scripts/test/V8/V8TestEventTarget.cpp:
+ (WebCore::V8TestEventTarget::wrapSlow):
+ * bindings/scripts/test/V8/V8TestEventTarget.h:
+ (V8TestEventTarget):
+ * bindings/scripts/test/V8/V8TestInterface.cpp:
+ (WebCore::V8TestInterface::wrapSlow):
+ * bindings/scripts/test/V8/V8TestInterface.h:
+ (V8TestInterface):
+ * bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp:
+ (WebCore::V8TestMediaQueryListListener::wrapSlow):
+ * bindings/scripts/test/V8/V8TestMediaQueryListListener.h:
+ (V8TestMediaQueryListListener):
+ * bindings/scripts/test/V8/V8TestNamedConstructor.cpp:
+ (WebCore::V8TestNamedConstructor::wrapSlow):
+ * bindings/scripts/test/V8/V8TestNamedConstructor.h:
+ (V8TestNamedConstructor):
+ * bindings/scripts/test/V8/V8TestObj.cpp:
+ (WebCore::V8TestObj::wrapSlow):
+ * bindings/scripts/test/V8/V8TestObj.h:
+ (V8TestObj):
+ * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp:
+ (WebCore::V8TestSerializedScriptValueInterface::wrapSlow):
+ * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h:
+ (V8TestSerializedScriptValueInterface):
+
2012-03-22 Jonathan Dong <[email protected]>
[BlackBerry] add interface clearCredentials() and clearNeverRememberSites()
Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm 2012-03-23 02:38:05 UTC (rev 111813)
@@ -422,9 +422,10 @@
END
}
+ my $wrapSlowArgumentType = GetPassRefPtrType($nativeType);
push(@headerContent, <<END);
private:
- static v8::Handle<v8::Object> wrapSlow(${nativeType}*);
+ static v8::Handle<v8::Object> wrapSlow(${wrapSlowArgumentType});
};
END
@@ -3108,10 +3109,11 @@
my $domMapFunction = GetDomMapFunction($dataNode, $interfaceName);
my $forceNewObjectInput = IsDOMNodeType($interfaceName) ? ", bool forceNewObject" : "";
my $forceNewObjectCall = IsDOMNodeType($interfaceName) ? ", forceNewObject" : "";
+ my $wrapSlowArgumentType = GetPassRefPtrType($nativeType);
push(@implContent, <<END);
-v8::Handle<v8::Object> ${className}::wrapSlow(${nativeType}* impl)
+v8::Handle<v8::Object> ${className}::wrapSlow(${wrapSlowArgumentType} impl)
{
v8::Handle<v8::Object> wrapper;
END
@@ -3134,7 +3136,7 @@
push(@implContent, <<END);
if (proxy && proxy->windowShell()->context().IsEmpty() && proxy->windowShell()->initContextIfNeeded()) {
// initContextIfNeeded may have created a wrapper for the object, retry from the start.
- return ${className}::wrap(impl);
+ return ${className}::wrap(impl.get());
}
END
}
@@ -3166,7 +3168,7 @@
}
push(@implContent, <<END);
- wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl);
+ wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl.get());
END
if (IsNodeSubType($dataNode) || IsVisibleAcrossOrigins($dataNode)) {
push(@implContent, <<END);
@@ -3179,10 +3181,7 @@
push(@implContent, <<END);
if (UNLIKELY(wrapper.IsEmpty()))
return wrapper;
-END
- push(@implContent, "\n impl->ref();\n") if IsRefPtrType($interfaceName);
- push(@implContent, <<END);
v8::Persistent<v8::Object> wrapperHandle = v8::Persistent<v8::Object>::New(wrapper);
if (!hasDependentLifetime)
@@ -3192,12 +3191,9 @@
push(@implContent, <<END);
wrapperHandle.SetWrapperClassId(v8DOMSubtreeClassId);
END
- }
+ }
push(@implContent, <<END);
- ${domMapFunction}.set(impl, wrapperHandle);
-END
-
- push(@implContent, <<END);
+ ${domMapFunction}.set(impl.leakRef(), wrapperHandle);
return wrapper;
}
END
@@ -3929,6 +3925,14 @@
return "RuntimeEnabledFeatures::" . $codeGenerator->WK_lcfirst($signature->name) . "Enabled";
}
+sub GetPassRefPtrType
+{
+ my $className = shift;
+
+ my $angleBracketSpace = $className =~ />$/ ? " " : "";
+ return "PassRefPtr<${className}${angleBracketSpace}>";
+}
+
sub DebugPrint
{
my $output = shift;
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.cpp (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.cpp 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.cpp 2012-03-23 02:38:05 UTC (rev 111813)
@@ -120,20 +120,19 @@
}
-v8::Handle<v8::Object> V8Float64Array::wrapSlow(Float64Array* impl)
+v8::Handle<v8::Object> V8Float64Array::wrapSlow(PassRefPtr<Float64Array> impl)
{
v8::Handle<v8::Object> wrapper;
V8Proxy* proxy = 0;
- wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl);
+ wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl.get());
if (UNLIKELY(wrapper.IsEmpty()))
return wrapper;
- impl->ref();
v8::Persistent<v8::Object> wrapperHandle = v8::Persistent<v8::Object>::New(wrapper);
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- getDOMObjectMap().set(impl, wrapperHandle);
+ getDOMObjectMap().set(impl.leakRef(), wrapperHandle);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.h (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.h 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.h 2012-03-23 02:38:05 UTC (rev 111813)
@@ -47,7 +47,7 @@
static v8::Handle<v8::Value> constructorCallback(const v8::Arguments&);
static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
private:
- static v8::Handle<v8::Object> wrapSlow(Float64Array*);
+ static v8::Handle<v8::Object> wrapSlow(PassRefPtr<Float64Array>);
};
v8::Handle<v8::Object> V8Float64Array::wrap(Float64Array* impl)
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp 2012-03-23 02:38:05 UTC (rev 111813)
@@ -158,7 +158,7 @@
}
-v8::Handle<v8::Object> V8TestActiveDOMObject::wrapSlow(TestActiveDOMObject* impl)
+v8::Handle<v8::Object> V8TestActiveDOMObject::wrapSlow(PassRefPtr<TestActiveDOMObject> impl)
{
v8::Handle<v8::Object> wrapper;
V8Proxy* proxy = 0;
@@ -175,19 +175,18 @@
// Enter the node's context and create the wrapper in that context.
if (!context.IsEmpty())
context->Enter();
- wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl);
+ wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl.get());
// Exit the node's context if it was entered.
if (!context.IsEmpty())
context->Exit();
if (UNLIKELY(wrapper.IsEmpty()))
return wrapper;
- impl->ref();
v8::Persistent<v8::Object> wrapperHandle = v8::Persistent<v8::Object>::New(wrapper);
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- getDOMObjectMap().set(impl, wrapperHandle);
+ getDOMObjectMap().set(impl.leakRef(), wrapperHandle);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.h (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.h 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.h 2012-03-23 02:38:05 UTC (rev 111813)
@@ -47,7 +47,7 @@
static bool namedSecurityCheck(v8::Local<v8::Object> host, v8::Local<v8::Value> key, v8::AccessType, v8::Local<v8::Value> data);
static bool indexedSecurityCheck(v8::Local<v8::Object> host, uint32_t index, v8::AccessType, v8::Local<v8::Value> data);
private:
- static v8::Handle<v8::Object> wrapSlow(TestActiveDOMObject*);
+ static v8::Handle<v8::Object> wrapSlow(PassRefPtr<TestActiveDOMObject>);
};
v8::Handle<v8::Object> V8TestActiveDOMObject::wrap(TestActiveDOMObject* impl)
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp 2012-03-23 02:38:05 UTC (rev 111813)
@@ -110,20 +110,19 @@
}
-v8::Handle<v8::Object> V8TestCustomNamedGetter::wrapSlow(TestCustomNamedGetter* impl)
+v8::Handle<v8::Object> V8TestCustomNamedGetter::wrapSlow(PassRefPtr<TestCustomNamedGetter> impl)
{
v8::Handle<v8::Object> wrapper;
V8Proxy* proxy = 0;
- wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl);
+ wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl.get());
if (UNLIKELY(wrapper.IsEmpty()))
return wrapper;
- impl->ref();
v8::Persistent<v8::Object> wrapperHandle = v8::Persistent<v8::Object>::New(wrapper);
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- getDOMObjectMap().set(impl, wrapperHandle);
+ getDOMObjectMap().set(impl.leakRef(), wrapperHandle);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.h (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.h 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.h 2012-03-23 02:38:05 UTC (rev 111813)
@@ -46,7 +46,7 @@
static v8::Handle<v8::Value> namedPropertyGetter(v8::Local<v8::String>, const v8::AccessorInfo&);
static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
private:
- static v8::Handle<v8::Object> wrapSlow(TestCustomNamedGetter*);
+ static v8::Handle<v8::Object> wrapSlow(PassRefPtr<TestCustomNamedGetter>);
};
v8::Handle<v8::Object> V8TestCustomNamedGetter::wrap(TestCustomNamedGetter* impl)
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.cpp (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.cpp 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.cpp 2012-03-23 02:38:05 UTC (rev 111813)
@@ -145,20 +145,19 @@
}
-v8::Handle<v8::Object> V8TestEventConstructor::wrapSlow(TestEventConstructor* impl)
+v8::Handle<v8::Object> V8TestEventConstructor::wrapSlow(PassRefPtr<TestEventConstructor> impl)
{
v8::Handle<v8::Object> wrapper;
V8Proxy* proxy = 0;
- wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl);
+ wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl.get());
if (UNLIKELY(wrapper.IsEmpty()))
return wrapper;
- impl->ref();
v8::Persistent<v8::Object> wrapperHandle = v8::Persistent<v8::Object>::New(wrapper);
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- getDOMObjectMap().set(impl, wrapperHandle);
+ getDOMObjectMap().set(impl.leakRef(), wrapperHandle);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.h (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.h 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.h 2012-03-23 02:38:05 UTC (rev 111813)
@@ -47,7 +47,7 @@
static v8::Handle<v8::Value> constructorCallback(const v8::Arguments&);
static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
private:
- static v8::Handle<v8::Object> wrapSlow(TestEventConstructor*);
+ static v8::Handle<v8::Object> wrapSlow(PassRefPtr<TestEventConstructor>);
};
v8::Handle<v8::Object> V8TestEventConstructor::wrap(TestEventConstructor* impl)
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp 2012-03-23 02:38:05 UTC (rev 111813)
@@ -173,20 +173,19 @@
}
-v8::Handle<v8::Object> V8TestEventTarget::wrapSlow(TestEventTarget* impl)
+v8::Handle<v8::Object> V8TestEventTarget::wrapSlow(PassRefPtr<TestEventTarget> impl)
{
v8::Handle<v8::Object> wrapper;
V8Proxy* proxy = 0;
- wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl);
+ wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl.get());
if (UNLIKELY(wrapper.IsEmpty()))
return wrapper;
- impl->ref();
v8::Persistent<v8::Object> wrapperHandle = v8::Persistent<v8::Object>::New(wrapper);
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- getDOMObjectMap().set(impl, wrapperHandle);
+ getDOMObjectMap().set(impl.leakRef(), wrapperHandle);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.h (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.h 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.h 2012-03-23 02:38:05 UTC (rev 111813)
@@ -48,7 +48,7 @@
static const int eventListenerCacheIndex = v8DefaultWrapperInternalFieldCount + 0;
static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 1;
private:
- static v8::Handle<v8::Object> wrapSlow(TestEventTarget*);
+ static v8::Handle<v8::Object> wrapSlow(PassRefPtr<TestEventTarget>);
};
v8::Handle<v8::Object> V8TestEventTarget::wrap(TestEventTarget* impl)
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp 2012-03-23 02:38:05 UTC (rev 111813)
@@ -306,20 +306,19 @@
return toNative(object);
}
-v8::Handle<v8::Object> V8TestInterface::wrapSlow(TestInterface* impl)
+v8::Handle<v8::Object> V8TestInterface::wrapSlow(PassRefPtr<TestInterface> impl)
{
v8::Handle<v8::Object> wrapper;
V8Proxy* proxy = 0;
- wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl);
+ wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl.get());
if (UNLIKELY(wrapper.IsEmpty()))
return wrapper;
- impl->ref();
v8::Persistent<v8::Object> wrapperHandle = v8::Persistent<v8::Object>::New(wrapper);
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- getActiveDOMObjectMap().set(impl, wrapperHandle);
+ getActiveDOMObjectMap().set(impl.leakRef(), wrapperHandle);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.h (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.h 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.h 2012-03-23 02:38:05 UTC (rev 111813)
@@ -50,7 +50,7 @@
static v8::Handle<v8::Value> namedPropertySetter(v8::Local<v8::String>, v8::Local<v8::Value>, const v8::AccessorInfo&);
static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
private:
- static v8::Handle<v8::Object> wrapSlow(TestInterface*);
+ static v8::Handle<v8::Object> wrapSlow(PassRefPtr<TestInterface>);
};
v8::Handle<v8::Object> V8TestInterface::wrap(TestInterface* impl)
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp 2012-03-23 02:38:05 UTC (rev 111813)
@@ -110,20 +110,19 @@
}
-v8::Handle<v8::Object> V8TestMediaQueryListListener::wrapSlow(TestMediaQueryListListener* impl)
+v8::Handle<v8::Object> V8TestMediaQueryListListener::wrapSlow(PassRefPtr<TestMediaQueryListListener> impl)
{
v8::Handle<v8::Object> wrapper;
V8Proxy* proxy = 0;
- wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl);
+ wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl.get());
if (UNLIKELY(wrapper.IsEmpty()))
return wrapper;
- impl->ref();
v8::Persistent<v8::Object> wrapperHandle = v8::Persistent<v8::Object>::New(wrapper);
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- getDOMObjectMap().set(impl, wrapperHandle);
+ getDOMObjectMap().set(impl.leakRef(), wrapperHandle);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.h (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.h 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.h 2012-03-23 02:38:05 UTC (rev 111813)
@@ -45,7 +45,7 @@
static WrapperTypeInfo info;
static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
private:
- static v8::Handle<v8::Object> wrapSlow(TestMediaQueryListListener*);
+ static v8::Handle<v8::Object> wrapSlow(PassRefPtr<TestMediaQueryListListener>);
};
v8::Handle<v8::Object> V8TestMediaQueryListListener::wrap(TestMediaQueryListListener* impl)
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.cpp (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.cpp 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.cpp 2012-03-23 02:38:05 UTC (rev 111813)
@@ -155,20 +155,19 @@
return toNative(object);
}
-v8::Handle<v8::Object> V8TestNamedConstructor::wrapSlow(TestNamedConstructor* impl)
+v8::Handle<v8::Object> V8TestNamedConstructor::wrapSlow(PassRefPtr<TestNamedConstructor> impl)
{
v8::Handle<v8::Object> wrapper;
V8Proxy* proxy = 0;
- wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl);
+ wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl.get());
if (UNLIKELY(wrapper.IsEmpty()))
return wrapper;
- impl->ref();
v8::Persistent<v8::Object> wrapperHandle = v8::Persistent<v8::Object>::New(wrapper);
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- getActiveDOMObjectMap().set(impl, wrapperHandle);
+ getActiveDOMObjectMap().set(impl.leakRef(), wrapperHandle);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.h (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.h 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.h 2012-03-23 02:38:05 UTC (rev 111813)
@@ -52,7 +52,7 @@
static ActiveDOMObject* toActiveDOMObject(v8::Handle<v8::Object>);
static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
private:
- static v8::Handle<v8::Object> wrapSlow(TestNamedConstructor*);
+ static v8::Handle<v8::Object> wrapSlow(PassRefPtr<TestNamedConstructor>);
};
v8::Handle<v8::Object> V8TestNamedConstructor::wrap(TestNamedConstructor* impl)
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp 2012-03-23 02:38:05 UTC (rev 111813)
@@ -2138,20 +2138,19 @@
}
-v8::Handle<v8::Object> V8TestObj::wrapSlow(TestObj* impl)
+v8::Handle<v8::Object> V8TestObj::wrapSlow(PassRefPtr<TestObj> impl)
{
v8::Handle<v8::Object> wrapper;
V8Proxy* proxy = 0;
- wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl);
+ wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl.get());
if (UNLIKELY(wrapper.IsEmpty()))
return wrapper;
- impl->ref();
v8::Persistent<v8::Object> wrapperHandle = v8::Persistent<v8::Object>::New(wrapper);
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- getDOMObjectMap().set(impl, wrapperHandle);
+ getDOMObjectMap().set(impl.leakRef(), wrapperHandle);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.h (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.h 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.h 2012-03-23 02:38:05 UTC (rev 111813)
@@ -51,7 +51,7 @@
static void customAttrAccessorSetter(v8::Local<v8::String> name, v8::Local<v8::Value>, const v8::AccessorInfo&);
static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
private:
- static v8::Handle<v8::Object> wrapSlow(TestObj*);
+ static v8::Handle<v8::Object> wrapSlow(PassRefPtr<TestObj>);
};
v8::Handle<v8::Object> V8TestObj::wrap(TestObj* impl)
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp 2012-03-23 02:38:05 UTC (rev 111813)
@@ -277,20 +277,19 @@
}
-v8::Handle<v8::Object> V8TestSerializedScriptValueInterface::wrapSlow(TestSerializedScriptValueInterface* impl)
+v8::Handle<v8::Object> V8TestSerializedScriptValueInterface::wrapSlow(PassRefPtr<TestSerializedScriptValueInterface> impl)
{
v8::Handle<v8::Object> wrapper;
V8Proxy* proxy = 0;
- wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl);
+ wrapper = V8DOMWrapper::instantiateV8Object(proxy, &info, impl.get());
if (UNLIKELY(wrapper.IsEmpty()))
return wrapper;
- impl->ref();
v8::Persistent<v8::Object> wrapperHandle = v8::Persistent<v8::Object>::New(wrapper);
if (!hasDependentLifetime)
wrapperHandle.MarkIndependent();
- getDOMObjectMap().set(impl, wrapperHandle);
+ getDOMObjectMap().set(impl.leakRef(), wrapperHandle);
return wrapper;
}
Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h (111812 => 111813)
--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h 2012-03-23 02:30:20 UTC (rev 111812)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h 2012-03-23 02:38:05 UTC (rev 111813)
@@ -48,7 +48,7 @@
static v8::Handle<v8::Value> constructorCallback(const v8::Arguments&);
static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
private:
- static v8::Handle<v8::Object> wrapSlow(TestSerializedScriptValueInterface*);
+ static v8::Handle<v8::Object> wrapSlow(PassRefPtr<TestSerializedScriptValueInterface>);
};
v8::Handle<v8::Object> V8TestSerializedScriptValueInterface::wrap(TestSerializedScriptValueInterface* impl)