Get to Structures more efficiently in JSCell::methodTable().
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 4 Mar 2014 22:40:50 +0000 (22:40 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 4 Mar 2014 22:40:50 +0000 (22:40 +0000)
<https://webkit.org/b/129702>

In JSCell::methodTable(), get the VM once and pass that along to
structure(VM&) instead of using the heavier structure().

In JSCell::methodTable(VM&), replace calls to structure() with
calls to structure(VM&).

Reviewed by Mark Hahnenberg.

* runtime/JSCellInlines.h:
(JSC::JSCell::methodTable):

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

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/JSCellInlines.h

index c9d0252df091e26864714aed9c9ecc16f0ef7050..497f35792d757be313be59fb386a64c41ed52f6b 100644 (file)
@@ -1,3 +1,19 @@
+2014-03-04  Andreas Kling  <akling@apple.com>
+
+        Get to Structures more efficiently in JSCell::methodTable().
+        <https://webkit.org/b/129702>
+
+        In JSCell::methodTable(), get the VM once and pass that along to
+        structure(VM&) instead of using the heavier structure().
+
+        In JSCell::methodTable(VM&), replace calls to structure() with
+        calls to structure(VM&).
+
+        Reviewed by Mark Hahnenberg.
+
+        * runtime/JSCellInlines.h:
+        (JSC::JSCell::methodTable):
+
 2014-03-04  Joseph Pecoraro  <pecoraro@apple.com>
 
         Web Inspector: Listen for the XPC_ERROR_CONNECTION_INVALID event to deref
index d8045b5777a7f6ec065f2b2887f271d9f773e18e..890760bd8eed8d12e1138beb2c77dfebdb7c4a76 100644 (file)
@@ -189,9 +189,10 @@ inline const MethodTable* JSCell::methodTableForDestruction() const
 
 inline const MethodTable* JSCell::methodTable() const
 {
-    Structure* structure = this->structure();
-    if (Structure* rootStructure = structure->structure())
-        RELEASE_ASSERT(rootStructure == rootStructure->structure());
+    VM& vm = *Heap::heap(this)->vm();
+    Structure* structure = this->structure(vm);
+    if (Structure* rootStructure = structure->structure(vm))
+        RELEASE_ASSERT(rootStructure == rootStructure->structure(vm));
 
     return &structure->classInfo()->methodTable;
 }
@@ -199,8 +200,8 @@ inline const MethodTable* JSCell::methodTable() const
 inline const MethodTable* JSCell::methodTable(VM& vm) const
 {
     Structure* structure = this->structure(vm);
-    if (Structure* rootStructure = structure->structure())
-        RELEASE_ASSERT(rootStructure == rootStructure->structure());
+    if (Structure* rootStructure = structure->structure(vm))
+        RELEASE_ASSERT(rootStructure == rootStructure->structure(vm));
 
     return &structure->classInfo()->methodTable;
 }