From f2606828bf07cbec29fa5bd60a6e1673c55da763 Mon Sep 17 00:00:00 2001 From: "adamk@chromium.org" Date: Thu, 12 Apr 2012 21:11:37 +0000 Subject: [PATCH] Always set V8 wrappers via V8DOMWrapper::setJSWrapperFor* instead of WeakReferenceMap::set() https://bugs.webkit.org/show_bug.cgi?id=82256 Reviewed by Kentaro Hara. This is an attempt to reland r112318, which was rolled out due to suspicion of OOM issues. I've landed the refactoring bits of r112318 as separate changes, so that this patch contains only the change in which map setter is called. Binding tests have been updated with new output. * bindings/scripts/CodeGeneratorV8.pm: (GenerateToV8Converters): Call appropriate V8DOMWrapper::setJSWrapperFor* to set up wrapper mapping and remove call to leakRef() which is handled in V8DOMWrapper. * bindings/scripts/test/V8/V8Float64Array.cpp: (WebCore::V8Float64Array::wrapSlow): * bindings/scripts/test/V8/V8TestActiveDOMObject.cpp: (WebCore::V8TestActiveDOMObject::wrapSlow): * bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp: (WebCore::V8TestCustomNamedGetter::wrapSlow): * bindings/scripts/test/V8/V8TestEventConstructor.cpp: (WebCore::V8TestEventConstructor::wrapSlow): * bindings/scripts/test/V8/V8TestEventTarget.cpp: (WebCore::V8TestEventTarget::wrapSlow): * bindings/scripts/test/V8/V8TestInterface.cpp: (WebCore::V8TestInterface::wrapSlow): * bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp: (WebCore::V8TestMediaQueryListListener::wrapSlow): * bindings/scripts/test/V8/V8TestNamedConstructor.cpp: (WebCore::V8TestNamedConstructor::wrapSlow): * bindings/scripts/test/V8/V8TestNode.cpp: (WebCore::V8TestNode::wrapSlow): * bindings/scripts/test/V8/V8TestObj.cpp: (WebCore::V8TestObj::wrapSlow): * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp: (WebCore::V8TestSerializedScriptValueInterface::wrapSlow): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@114034 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- Source/WebCore/ChangeLog | 41 ++++++++++++++++++++++ Source/WebCore/bindings/scripts/CodeGeneratorV8.pm | 4 +-- .../bindings/scripts/test/V8/V8Float64Array.cpp | 2 +- .../scripts/test/V8/V8TestActiveDOMObject.cpp | 2 +- .../scripts/test/V8/V8TestCustomNamedGetter.cpp | 2 +- .../scripts/test/V8/V8TestEventConstructor.cpp | 2 +- .../bindings/scripts/test/V8/V8TestEventTarget.cpp | 2 +- .../bindings/scripts/test/V8/V8TestInterface.cpp | 2 +- .../test/V8/V8TestMediaQueryListListener.cpp | 2 +- .../scripts/test/V8/V8TestNamedConstructor.cpp | 2 +- .../bindings/scripts/test/V8/V8TestNode.cpp | 2 +- .../WebCore/bindings/scripts/test/V8/V8TestObj.cpp | 2 +- .../V8/V8TestSerializedScriptValueInterface.cpp | 2 +- 13 files changed, 54 insertions(+), 13 deletions(-) diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index f19327e..98fbb33 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,44 @@ +2012-04-12 Adam Klein + + Always set V8 wrappers via V8DOMWrapper::setJSWrapperFor* instead of WeakReferenceMap::set() + https://bugs.webkit.org/show_bug.cgi?id=82256 + + Reviewed by Kentaro Hara. + + This is an attempt to reland r112318, which was rolled out due to suspicion of OOM issues. + + I've landed the refactoring bits of r112318 as separate changes, + so that this patch contains only the change in which map setter is called. + + Binding tests have been updated with new output. + + * bindings/scripts/CodeGeneratorV8.pm: + (GenerateToV8Converters): Call appropriate V8DOMWrapper::setJSWrapperFor* + to set up wrapper mapping and remove call to leakRef() which is handled + in V8DOMWrapper. + * bindings/scripts/test/V8/V8Float64Array.cpp: + (WebCore::V8Float64Array::wrapSlow): + * bindings/scripts/test/V8/V8TestActiveDOMObject.cpp: + (WebCore::V8TestActiveDOMObject::wrapSlow): + * bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp: + (WebCore::V8TestCustomNamedGetter::wrapSlow): + * bindings/scripts/test/V8/V8TestEventConstructor.cpp: + (WebCore::V8TestEventConstructor::wrapSlow): + * bindings/scripts/test/V8/V8TestEventTarget.cpp: + (WebCore::V8TestEventTarget::wrapSlow): + * bindings/scripts/test/V8/V8TestInterface.cpp: + (WebCore::V8TestInterface::wrapSlow): + * bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp: + (WebCore::V8TestMediaQueryListListener::wrapSlow): + * bindings/scripts/test/V8/V8TestNamedConstructor.cpp: + (WebCore::V8TestNamedConstructor::wrapSlow): + * bindings/scripts/test/V8/V8TestNode.cpp: + (WebCore::V8TestNode::wrapSlow): + * bindings/scripts/test/V8/V8TestObj.cpp: + (WebCore::V8TestObj::wrapSlow): + * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp: + (WebCore::V8TestSerializedScriptValueInterface::wrapSlow): + 2012-04-12 David Hyatt https://bugs.webkit.org/show_bug.cgi?id=83817 diff --git a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm b/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm index 0c93f19..e968a73 100644 --- a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm +++ b/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm @@ -3070,7 +3070,7 @@ sub GenerateToV8Converters my $className = shift; my $nativeType = shift; - my $domMapFunction = GetDomMapFunction($dataNode, $interfaceName); + my $domMapName = GetDomMapName($dataNode, $interfaceName); my $forceNewObjectInput = IsDOMNodeType($interfaceName) ? ", bool forceNewObject" : ""; my $forceNewObjectCall = IsDOMNodeType($interfaceName) ? ", forceNewObject" : ""; my $wrapSlowArgumentType = GetPassRefPtrType($nativeType); @@ -3159,7 +3159,7 @@ END END } push(@implContent, < V8Float64Array::wrapSlow(PassRefPtr impl) if (!hasDependentLifetime) wrapperHandle.MarkIndependent(); - getDOMObjectMap().set(impl.leakRef(), wrapperHandle); + V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle); return wrapper; } diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp index 00eee64..b686871 100644 --- a/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp +++ b/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp @@ -188,7 +188,7 @@ v8::Handle V8TestActiveDOMObject::wrapSlow(PassRefPtr V8TestCustomNamedGetter::wrapSlow(PassRefPtr V8TestEventConstructor::wrapSlow(PassRefPtr V8TestEventTarget::wrapSlow(PassRefPtr i if (!hasDependentLifetime) wrapperHandle.MarkIndependent(); - getDOMObjectMap().set(impl.leakRef(), wrapperHandle); + V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle); return wrapper; } diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp index bd1cc9d..51926db 100644 --- a/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp +++ b/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp @@ -317,7 +317,7 @@ v8::Handle V8TestInterface::wrapSlow(PassRefPtr impl) if (!hasDependentLifetime) wrapperHandle.MarkIndependent(); - getActiveDOMObjectMap().set(impl.leakRef(), wrapperHandle); + V8DOMWrapper::setJSWrapperForActiveDOMObject(impl, wrapperHandle); return wrapper; } diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp index d4db7bd..86c5528 100644 --- a/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp +++ b/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp @@ -122,7 +122,7 @@ v8::Handle V8TestMediaQueryListListener::wrapSlow(PassRefPtr V8TestNamedConstructor::wrapSlow(PassRefPtr V8TestNode::wrapSlow(PassRefPtr impl) if (!hasDependentLifetime) wrapperHandle.MarkIndependent(); wrapperHandle.SetWrapperClassId(v8DOMSubtreeClassId); - getDOMNodeMap().set(impl.leakRef(), wrapperHandle); + V8DOMWrapper::setJSWrapperForDOMNode(impl, wrapperHandle); return wrapper; } diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp index 40116e2..20cb98d 100644 --- a/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp +++ b/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp @@ -2171,7 +2171,7 @@ v8::Handle V8TestObj::wrapSlow(PassRefPtr impl) if (!hasDependentLifetime) wrapperHandle.MarkIndependent(); - getDOMObjectMap().set(impl.leakRef(), wrapperHandle); + V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle); return wrapper; } diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp index 8cff0ab..1806822 100644 --- a/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp +++ b/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp @@ -288,7 +288,7 @@ v8::Handle V8TestSerializedScriptValueInterface::wrapSlow(PassRefPtr if (!hasDependentLifetime) wrapperHandle.MarkIndependent(); - getDOMObjectMap().set(impl.leakRef(), wrapperHandle); + V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle); return wrapper; } -- 2.7.4