DOMImplementation should use ScriptWrappable
authorabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Nov 2012 20:25:52 +0000 (20:25 +0000)
committerabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Nov 2012 20:25:52 +0000 (20:25 +0000)
https://bugs.webkit.org/show_bug.cgi?id=101279

Reviewed by Eric Seidel.

PerformanceTests:

This simple PerformanceTest measure how quickly we can access
document.implementation. The goal of this performance test is just to
validate that using ScriptWrappable actually makes the bindings faster.

* Bindings/document-implementation.html: Added.

Source/WebCore:

This patch makes DOMImplementation ScriptWrappable. Both the V8 and JSC
bindings automatically detect the presence of this base class and use
it to optimize getting and setting JavaScript wrappers.

This patch is a 23% progression on Bindings/document-implementation for
the V8 bindings and a 69% progression for the JSC bindings.

* dom/DOMImplementation.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@133657 268f45cc-cd09-0410-ab3c-d52691b4dbfc

PerformanceTests/Bindings/document-implementation.html [new file with mode: 0644]
PerformanceTests/ChangeLog
Source/WebCore/ChangeLog
Source/WebCore/dom/DOMImplementation.h

diff --git a/PerformanceTests/Bindings/document-implementation.html b/PerformanceTests/Bindings/document-implementation.html
new file mode 100644 (file)
index 0000000..b4a1bdf
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="../resources/runner.js"></script>
+<script>
+PerfTestRunner.measureRunsPerSecond({
+    description: "This benchmark repeatedly accesses document.implementation.",
+    run: function() {
+        for (var i = 0; i < 100000; ++i)
+            document.implementation;
+}});
+</script>
+</body>
+</html>
index 13dfe9a..66ad1ba 100644 (file)
@@ -1,3 +1,16 @@
+2012-11-06  Adam Barth  <abarth@webkit.org>
+
+        DOMImplementation should use ScriptWrappable
+        https://bugs.webkit.org/show_bug.cgi?id=101279
+
+        Reviewed by Eric Seidel.
+
+        This simple PerformanceTest measure how quickly we can access
+        document.implementation. The goal of this performance test is just to
+        validate that using ScriptWrappable actually makes the bindings faster.
+
+        * Bindings/document-implementation.html: Added.
+
 2012-11-05  Geoffrey Garen  <ggaren@apple.com>
 
         WebKit should have performance tests for book chapter reflow
index ed4ead6..e3eeefb 100644 (file)
@@ -1,3 +1,19 @@
+2012-11-06  Adam Barth  <abarth@webkit.org>
+
+        DOMImplementation should use ScriptWrappable
+        https://bugs.webkit.org/show_bug.cgi?id=101279
+
+        Reviewed by Eric Seidel.
+
+        This patch makes DOMImplementation ScriptWrappable. Both the V8 and JSC
+        bindings automatically detect the presence of this base class and use
+        it to optimize getting and setting JavaScript wrappers.
+
+        This patch is a 23% progression on Bindings/document-implementation for
+        the V8 bindings and a 69% progression for the JSC bindings.
+
+        * dom/DOMImplementation.h:
+
 2012-11-06  Benjamin Poulain  <benjamin@webkit.org>
 
         Speed up TransformationMatrix::multiply() on modern ARM
index 9d53b91..dffb549 100644 (file)
@@ -42,7 +42,7 @@ class RegularExpression;
 
 typedef int ExceptionCode;
 
-class DOMImplementation {
+class DOMImplementation : public ScriptWrappable {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     static PassOwnPtr<DOMImplementation> create(Document* document) { return adoptPtr(new DOMImplementation(document)); }