JSCell::fastGetOwnProperty() should get the Structure more efficiently.
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 1 Mar 2014 23:05:02 +0000 (23:05 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 1 Mar 2014 23:05:02 +0000 (23:05 +0000)
<https://webkit.org/b/129560>

Now that structure() is nontrivial and we have a faster structure(VM&),
make use of that in fastGetOwnProperty() since we already have VM.

Reviewed by Sam Weinig.

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

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

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

index 7a4505b9ba9923ea1c26af6fd46e8277c72d9c32..2f3e9592c0108fc9ac1241e5a7b9ad27b6e5e4bf 100644 (file)
@@ -1,3 +1,16 @@
+2014-03-01  Andreas Kling  <akling@apple.com>
+
+        JSCell::fastGetOwnProperty() should get the Structure more efficiently.
+        <https://webkit.org/b/129560>
+
+        Now that structure() is nontrivial and we have a faster structure(VM&),
+        make use of that in fastGetOwnProperty() since we already have VM.
+
+        Reviewed by Sam Weinig.
+
+        * runtime/JSCellInlines.h:
+        (JSC::JSCell::fastGetOwnProperty):
+
 2014-03-01  Andreas Kling  <akling@apple.com>
 
         Avoid going through ExecState for VM when we already have it (in some places.)
 2014-03-01  Andreas Kling  <akling@apple.com>
 
         Avoid going through ExecState for VM when we already have it (in some places.)
index 435a0e7b144271ce06eaa6bceb9899b13ebcd4a3..d8045b5777a7f6ec065f2b2887f271d9f773e18e 100644 (file)
@@ -216,10 +216,11 @@ inline bool JSCell::inherits(const ClassInfo* info) const
 // case by checking whether the hash has yet been set for this string.
 ALWAYS_INLINE JSValue JSCell::fastGetOwnProperty(VM& vm, const String& name)
 {
 // case by checking whether the hash has yet been set for this string.
 ALWAYS_INLINE JSValue JSCell::fastGetOwnProperty(VM& vm, const String& name)
 {
-    if (!structure()->typeInfo().overridesGetOwnPropertySlot() && !structure()->hasGetterSetterProperties()) {
+    Structure& structure = *this->structure(vm);
+    if (!structure.typeInfo().overridesGetOwnPropertySlot() && !structure.hasGetterSetterProperties()) {
         PropertyOffset offset = name.impl()->hasHash()
         PropertyOffset offset = name.impl()->hasHash()
-            ? structure()->get(vm, Identifier(&vm, name))
-            : structure()->get(vm, name);
+            ? structure.get(vm, Identifier(&vm, name))
+            : structure.get(vm, name);
         if (offset != invalidOffset)
             return asObject(this)->locationForOffset(offset)->get();
     }
         if (offset != invalidOffset)
             return asObject(this)->locationForOffset(offset)->get();
     }