Title: [116269] trunk/Source/WebCore
Revision
116269
Author
[email protected]
Date
2012-05-06 21:39:31 -0700 (Sun, 06 May 2012)

Log Message

[V8][Performance] Remove Isolate lookup from the call path
to get a cached JS wrapper object by getDOMXXXXMap().
https://bugs.webkit.org/show_bug.cgi?id=85205

Reviewed by Adam Barth.

The patch improves the performance of getting a cached JS wrapper
by getDOMXXXXMap(). For example, it improves the performance
of toV8(NodeList*) in getElementsByTagName(), getElementsByName(),
getElementsByClassName() by 7 ~ 9%.

Performance tests: https://bugs.webkit.org/attachment.cgi?id=139468

The performance test results in my Linux desktop:

getElementsByTagName :   40.76 ms => 37.52ms (+8.6%)
getElementsByName :      41.02 ms => 37.42ms (+9.6%)
getElementsByClassName : 40.32 ms => 37.68ms (+7.0%)

Unfortunately we cannot observe performance improvement in
Dromaeo/dom-query.html, which are testing getElementsByTagName(),
getElementsByName(), getElementsByClassName(). This is because
the bottleneck of these Dromaeo tests is not toV8(NodeList*) but
.length and .nodeType accesses. The patch for optimizing them
will be coming soon.

No tests. No change in behavior.

* bindings/scripts/CodeGeneratorV8.pm: Modified as described above.
(GenerateHeader):
(GenerateNormalAttrGetter):
(GetDomMapFunction):
(NativeToJSValue):
* bindings/v8/DOMData.cpp:
(WebCore::DOMData::getCurrentStore):

* bindings/scripts/test/V8/V8Float64Array.h: Updated run-bindings-tests results.
(WebCore::V8Float64Array::wrap):
* bindings/scripts/test/V8/V8TestActiveDOMObject.h:
(WebCore::V8TestActiveDOMObject::wrap):
* bindings/scripts/test/V8/V8TestCustomNamedGetter.h:
(WebCore::V8TestCustomNamedGetter::wrap):
* bindings/scripts/test/V8/V8TestEventConstructor.h:
(WebCore::V8TestEventConstructor::wrap):
* bindings/scripts/test/V8/V8TestEventTarget.cpp:
(WebCore::TestEventTargetV8Internal::itemCallback):
* bindings/scripts/test/V8/V8TestEventTarget.h:
(WebCore::V8TestEventTarget::wrap):
* bindings/scripts/test/V8/V8TestInterface.cpp:
(WebCore::TestInterfaceV8Internal::supplementalNodeAttrGetter):
* bindings/scripts/test/V8/V8TestInterface.h:
(WebCore::V8TestInterface::wrap):
* bindings/scripts/test/V8/V8TestMediaQueryListListener.h:
(WebCore::V8TestMediaQueryListListener::wrap):
* bindings/scripts/test/V8/V8TestNamedConstructor.h:
(WebCore::V8TestNamedConstructor::wrap):
* bindings/scripts/test/V8/V8TestObj.cpp:
(WebCore::TestObjV8Internal::readOnlyTestObjAttrAttrGetter):
(WebCore::TestObjV8Internal::cachedAttribute1AttrGetter):
(WebCore::TestObjV8Internal::cachedAttribute2AttrGetter):
(WebCore::TestObjV8Internal::contentDocumentAttrGetter):
(WebCore::TestObjV8Internal::getSVGDocumentCallback):
* bindings/scripts/test/V8/V8TestObj.h:
(WebCore::V8TestObj::wrap):
* bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h:
(WebCore::V8TestSerializedScriptValueInterface::wrap):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (116268 => 116269)


--- trunk/Source/WebCore/ChangeLog	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/ChangeLog	2012-05-07 04:39:31 UTC (rev 116269)
@@ -1,3 +1,72 @@
+2012-05-06  Kentaro Hara  <[email protected]>
+
+        [V8][Performance] Remove Isolate lookup from the call path
+        to get a cached JS wrapper object by getDOMXXXXMap().
+        https://bugs.webkit.org/show_bug.cgi?id=85205
+
+        Reviewed by Adam Barth.
+
+        The patch improves the performance of getting a cached JS wrapper
+        by getDOMXXXXMap(). For example, it improves the performance
+        of toV8(NodeList*) in getElementsByTagName(), getElementsByName(),
+        getElementsByClassName() by 7 ~ 9%.
+
+        Performance tests: https://bugs.webkit.org/attachment.cgi?id=139468
+
+        The performance test results in my Linux desktop:
+
+        getElementsByTagName :   40.76 ms => 37.52ms (+8.6%)
+        getElementsByName :      41.02 ms => 37.42ms (+9.6%)
+        getElementsByClassName : 40.32 ms => 37.68ms (+7.0%)
+
+        Unfortunately we cannot observe performance improvement in
+        Dromaeo/dom-query.html, which are testing getElementsByTagName(),
+        getElementsByName(), getElementsByClassName(). This is because
+        the bottleneck of these Dromaeo tests is not toV8(NodeList*) but
+        .length and .nodeType accesses. The patch for optimizing them
+        will be coming soon.
+
+        No tests. No change in behavior.
+
+        * bindings/scripts/CodeGeneratorV8.pm: Modified as described above.
+        (GenerateHeader):
+        (GenerateNormalAttrGetter):
+        (GetDomMapFunction):
+        (NativeToJSValue):
+        * bindings/v8/DOMData.cpp:
+        (WebCore::DOMData::getCurrentStore):
+
+        * bindings/scripts/test/V8/V8Float64Array.h: Updated run-bindings-tests results.
+        (WebCore::V8Float64Array::wrap):
+        * bindings/scripts/test/V8/V8TestActiveDOMObject.h:
+        (WebCore::V8TestActiveDOMObject::wrap):
+        * bindings/scripts/test/V8/V8TestCustomNamedGetter.h:
+        (WebCore::V8TestCustomNamedGetter::wrap):
+        * bindings/scripts/test/V8/V8TestEventConstructor.h:
+        (WebCore::V8TestEventConstructor::wrap):
+        * bindings/scripts/test/V8/V8TestEventTarget.cpp:
+        (WebCore::TestEventTargetV8Internal::itemCallback):
+        * bindings/scripts/test/V8/V8TestEventTarget.h:
+        (WebCore::V8TestEventTarget::wrap):
+        * bindings/scripts/test/V8/V8TestInterface.cpp:
+        (WebCore::TestInterfaceV8Internal::supplementalNodeAttrGetter):
+        * bindings/scripts/test/V8/V8TestInterface.h:
+        (WebCore::V8TestInterface::wrap):
+        * bindings/scripts/test/V8/V8TestMediaQueryListListener.h:
+        (WebCore::V8TestMediaQueryListListener::wrap):
+        * bindings/scripts/test/V8/V8TestNamedConstructor.h:
+        (WebCore::V8TestNamedConstructor::wrap):
+        * bindings/scripts/test/V8/V8TestObj.cpp:
+        (WebCore::TestObjV8Internal::readOnlyTestObjAttrAttrGetter):
+        (WebCore::TestObjV8Internal::cachedAttribute1AttrGetter):
+        (WebCore::TestObjV8Internal::cachedAttribute2AttrGetter):
+        (WebCore::TestObjV8Internal::contentDocumentAttrGetter):
+        (WebCore::TestObjV8Internal::getSVGDocumentCallback):
+        * bindings/scripts/test/V8/V8TestObj.h:
+        (WebCore::V8TestObj::wrap):
+        * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h:
+        (WebCore::V8TestSerializedScriptValueInterface::wrap):
+
 2012-05-06  Adam Barth  <[email protected]>
 
         Content Security Policy reports should be reported with content-type application/json, should contain all required fields

Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm	2012-05-07 04:39:31 UTC (rev 116269)
@@ -314,7 +314,6 @@
         push(@headerContent, "false;\n");
     }
 
-    my $domMapFunction = GetDomMapFunction($dataNode, $interfaceName);
     my $forceNewObjectParameter = IsDOMNodeType($interfaceName) ? ", bool forceNewObject = false" : "";
     my $forceNewObjectInput = IsDOMNodeType($interfaceName) ? ", bool forceNewObject" : "";
     my $forceNewObjectCall = IsDOMNodeType($interfaceName) ? ", forceNewObject" : "";
@@ -424,6 +423,7 @@
 {
 END
     push(@headerContent, "    if (!forceNewObject) {\n") if IsDOMNodeType($interfaceName);
+    my $domMapFunction = GetDomMapFunction($dataNode, $interfaceName, "isolate");
     my $getCachedWrapper = IsNodeSubType($dataNode) ? "V8DOMWrapper::getCachedWrapper(impl)" : "${domMapFunction}.get(impl)";
     push(@headerContent, <<END);
         v8::Handle<v8::Object> wrapper = $getCachedWrapper;
@@ -929,7 +929,7 @@
         # Check for a wrapper in the wrapper cache. If there is one, we know that a hidden reference has already
         # been created. If we don't find a wrapper, we create both a wrapper and a hidden reference.
         push(@implContentDecls, "    RefPtr<$returnType> result = ${getterString};\n");
-        my $domMapFunction = GetDomMapFunction($dataNode, $interfaceName);
+        my $domMapFunction = GetDomMapFunction($dataNode, $interfaceName, "info.GetIsolate()");
         push(@implContentDecls, "    v8::Handle<v8::Value> wrapper = result.get() ? ${domMapFunction}.get(result.get()) : v8::Handle<v8::Object>();\n");
         push(@implContentDecls, "    if (wrapper.IsEmpty()) {\n");
         push(@implContentDecls, "        wrapper = toV8(result.get(), info.GetIsolate());\n");
@@ -3206,7 +3206,11 @@
 
 sub GetDomMapFunction
 {
-    return "get" . GetDomMapName(@_) . "Map()";
+    my $dataNode = shift;
+    my $interfaceName = shift;
+    my $getIsolate = shift;
+
+    return "get" . GetDomMapName($dataNode, $interfaceName) . "Map(" . $getIsolate . ")";
 }
 
 sub GetDomMapName
@@ -3817,7 +3821,7 @@
 
     # special case for non-DOM node interfaces
     if (IsDOMNodeType($type)) {
-        return "toV8(${value}" . ($signature->extendedAttributes->{"ReturnNewObject"} ? ", $getIsolate, true)" : ")");
+        return "toV8(${value}" . ($signature->extendedAttributes->{"ReturnNewObject"} ? ", $getIsolate, true)" : ", $getIsolate)");
     }
 
     if ($type eq "EventTarget") {

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.h (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.h	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.h	2012-05-07 04:39:31 UTC (rev 116269)
@@ -52,7 +52,7 @@
 
 v8::Handle<v8::Object> V8Float64Array::wrap(Float64Array* impl, v8::Isolate* isolate)
 {
-        v8::Handle<v8::Object> wrapper = getDOMObjectMap().get(impl);
+        v8::Handle<v8::Object> wrapper = getDOMObjectMap(isolate).get(impl);
         if (!wrapper.IsEmpty())
             return wrapper;
     return V8Float64Array::wrapSlow(impl, isolate);

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.h (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.h	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.h	2012-05-07 04:39:31 UTC (rev 116269)
@@ -52,7 +52,7 @@
 
 v8::Handle<v8::Object> V8TestActiveDOMObject::wrap(TestActiveDOMObject* impl, v8::Isolate* isolate)
 {
-        v8::Handle<v8::Object> wrapper = getDOMObjectMap().get(impl);
+        v8::Handle<v8::Object> wrapper = getDOMObjectMap(isolate).get(impl);
         if (!wrapper.IsEmpty())
             return wrapper;
     return V8TestActiveDOMObject::wrapSlow(impl, isolate);

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.h (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.h	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.h	2012-05-07 04:39:31 UTC (rev 116269)
@@ -51,7 +51,7 @@
 
 v8::Handle<v8::Object> V8TestCustomNamedGetter::wrap(TestCustomNamedGetter* impl, v8::Isolate* isolate)
 {
-        v8::Handle<v8::Object> wrapper = getDOMObjectMap().get(impl);
+        v8::Handle<v8::Object> wrapper = getDOMObjectMap(isolate).get(impl);
         if (!wrapper.IsEmpty())
             return wrapper;
     return V8TestCustomNamedGetter::wrapSlow(impl, isolate);

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.h (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.h	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.h	2012-05-07 04:39:31 UTC (rev 116269)
@@ -52,7 +52,7 @@
 
 v8::Handle<v8::Object> V8TestEventConstructor::wrap(TestEventConstructor* impl, v8::Isolate* isolate)
 {
-        v8::Handle<v8::Object> wrapper = getDOMObjectMap().get(impl);
+        v8::Handle<v8::Object> wrapper = getDOMObjectMap(isolate).get(impl);
         if (!wrapper.IsEmpty())
             return wrapper;
     return V8TestEventConstructor::wrapSlow(impl, isolate);

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp	2012-05-07 04:39:31 UTC (rev 116269)
@@ -55,7 +55,7 @@
         ec = INDEX_SIZE_ERR;
         goto fail;
     }
-    return toV8(imp->item(index));
+    return toV8(imp->item(index), args.GetIsolate());
     }
     fail:
     V8Proxy::setDOMException(ec, args.GetIsolate());

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.h (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.h	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.h	2012-05-07 04:39:31 UTC (rev 116269)
@@ -53,7 +53,7 @@
 
 v8::Handle<v8::Object> V8TestEventTarget::wrap(TestEventTarget* impl, v8::Isolate* isolate)
 {
-        v8::Handle<v8::Object> wrapper = getDOMObjectMap().get(impl);
+        v8::Handle<v8::Object> wrapper = getDOMObjectMap(isolate).get(impl);
         if (!wrapper.IsEmpty())
             return wrapper;
     return V8TestEventTarget::wrapSlow(impl, isolate);

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp	2012-05-07 04:39:31 UTC (rev 116269)
@@ -88,7 +88,7 @@
 {
     INC_STATS("DOM.TestInterface.supplementalNode._get");
     TestInterface* imp = V8TestInterface::toNative(info.Holder());
-    return toV8(TestSupplemental::supplementalNode(imp));
+    return toV8(TestSupplemental::supplementalNode(imp), info.GetIsolate());
 }
 
 #endif // ENABLE(Condition11) || ENABLE(Condition12)

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.h (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.h	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.h	2012-05-07 04:39:31 UTC (rev 116269)
@@ -55,7 +55,7 @@
 
 v8::Handle<v8::Object> V8TestInterface::wrap(TestInterface* impl, v8::Isolate* isolate)
 {
-        v8::Handle<v8::Object> wrapper = getActiveDOMObjectMap().get(impl);
+        v8::Handle<v8::Object> wrapper = getActiveDOMObjectMap(isolate).get(impl);
         if (!wrapper.IsEmpty())
             return wrapper;
     return V8TestInterface::wrapSlow(impl, isolate);

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.h (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.h	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.h	2012-05-07 04:39:31 UTC (rev 116269)
@@ -50,7 +50,7 @@
 
 v8::Handle<v8::Object> V8TestMediaQueryListListener::wrap(TestMediaQueryListListener* impl, v8::Isolate* isolate)
 {
-        v8::Handle<v8::Object> wrapper = getDOMObjectMap().get(impl);
+        v8::Handle<v8::Object> wrapper = getDOMObjectMap(isolate).get(impl);
         if (!wrapper.IsEmpty())
             return wrapper;
     return V8TestMediaQueryListListener::wrapSlow(impl, isolate);

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.h (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.h	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.h	2012-05-07 04:39:31 UTC (rev 116269)
@@ -57,7 +57,7 @@
 
 v8::Handle<v8::Object> V8TestNamedConstructor::wrap(TestNamedConstructor* impl, v8::Isolate* isolate)
 {
-        v8::Handle<v8::Object> wrapper = getActiveDOMObjectMap().get(impl);
+        v8::Handle<v8::Object> wrapper = getActiveDOMObjectMap(isolate).get(impl);
         if (!wrapper.IsEmpty())
             return wrapper;
     return V8TestNamedConstructor::wrapSlow(impl, isolate);

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp	2012-05-07 04:39:31 UTC (rev 116269)
@@ -98,7 +98,7 @@
     INC_STATS("DOM.TestObj.readOnlyTestObjAttr._get");
     TestObj* imp = V8TestObj::toNative(info.Holder());
     RefPtr<TestObj> result = imp->readOnlyTestObjAttr();
-    v8::Handle<v8::Value> wrapper = result.get() ? getDOMObjectMap().get(result.get()) : v8::Handle<v8::Object>();
+    v8::Handle<v8::Value> wrapper = result.get() ? getDOMObjectMap(info.GetIsolate()).get(result.get()) : v8::Handle<v8::Object>();
     if (wrapper.IsEmpty()) {
         wrapper = toV8(result.get(), info.GetIsolate());
         if (!wrapper.IsEmpty())
@@ -1019,7 +1019,7 @@
     INC_STATS("DOM.TestObj.cachedAttribute1._get");
     TestObj* imp = V8TestObj::toNative(info.Holder());
     RefPtr<any> result = imp->cachedAttribute1();
-    v8::Handle<v8::Value> wrapper = result.get() ? getDOMObjectMap().get(result.get()) : v8::Handle<v8::Object>();
+    v8::Handle<v8::Value> wrapper = result.get() ? getDOMObjectMap(info.GetIsolate()).get(result.get()) : v8::Handle<v8::Object>();
     if (wrapper.IsEmpty()) {
         wrapper = toV8(result.get(), info.GetIsolate());
         if (!wrapper.IsEmpty())
@@ -1033,7 +1033,7 @@
     INC_STATS("DOM.TestObj.cachedAttribute2._get");
     TestObj* imp = V8TestObj::toNative(info.Holder());
     RefPtr<any> result = imp->cachedAttribute2();
-    v8::Handle<v8::Value> wrapper = result.get() ? getDOMObjectMap().get(result.get()) : v8::Handle<v8::Object>();
+    v8::Handle<v8::Value> wrapper = result.get() ? getDOMObjectMap(info.GetIsolate()).get(result.get()) : v8::Handle<v8::Object>();
     if (wrapper.IsEmpty()) {
         wrapper = toV8(result.get(), info.GetIsolate());
         if (!wrapper.IsEmpty())
@@ -1113,7 +1113,7 @@
     if (!V8BindingSecurity::shouldAllowAccessToNode(V8BindingState::Only(), imp->contentDocument()))
         return v8::Handle<v8::Value>(v8::Null());
 
-    return toV8(imp->contentDocument());
+    return toV8(imp->contentDocument(), info.GetIsolate());
 }
 
 static v8::Handle<v8::Value> mutablePointAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
@@ -1892,7 +1892,7 @@
     RefPtr<SVGDocument> result = imp->getSVGDocument(ec);
     if (UNLIKELY(ec))
         goto fail;
-    return toV8(result.release());
+    return toV8(result.release(), args.GetIsolate());
     }
     fail:
     V8Proxy::setDOMException(ec, args.GetIsolate());

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.h (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.h	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.h	2012-05-07 04:39:31 UTC (rev 116269)
@@ -56,7 +56,7 @@
 
 v8::Handle<v8::Object> V8TestObj::wrap(TestObj* impl, v8::Isolate* isolate)
 {
-        v8::Handle<v8::Object> wrapper = getDOMObjectMap().get(impl);
+        v8::Handle<v8::Object> wrapper = getDOMObjectMap(isolate).get(impl);
         if (!wrapper.IsEmpty())
             return wrapper;
     return V8TestObj::wrapSlow(impl, isolate);

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h (116268 => 116269)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h	2012-05-07 04:39:31 UTC (rev 116269)
@@ -53,7 +53,7 @@
 
 v8::Handle<v8::Object> V8TestSerializedScriptValueInterface::wrap(TestSerializedScriptValueInterface* impl, v8::Isolate* isolate)
 {
-        v8::Handle<v8::Object> wrapper = getDOMObjectMap().get(impl);
+        v8::Handle<v8::Object> wrapper = getDOMObjectMap(isolate).get(impl);
         if (!wrapper.IsEmpty())
             return wrapper;
     return V8TestSerializedScriptValueInterface::wrapSlow(impl, isolate);

Modified: trunk/Source/WebCore/bindings/v8/DOMData.cpp (116268 => 116269)


--- trunk/Source/WebCore/bindings/v8/DOMData.cpp	2012-05-07 04:34:30 UTC (rev 116268)
+++ trunk/Source/WebCore/bindings/v8/DOMData.cpp	2012-05-07 04:39:31 UTC (rev 116269)
@@ -40,7 +40,7 @@
 DOMDataStore& DOMData::getCurrentStore(v8::Isolate* isolate)
 {
     DEFINE_STATIC_LOCAL(StaticDOMDataStore, defaultStore, ());
-    V8BindingPerIsolateData* data = ""
+    V8BindingPerIsolateData* data = ""
     if (UNLIKELY(data->domDataStore() != 0))
         return *data->domDataStore();
     V8IsolatedContext* context = V8IsolatedContext::getEntered();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to