Title: [87355] trunk/Source/_javascript_Core
Revision
87355
Author
[email protected]
Date
2011-05-25 21:05:42 -0700 (Wed, 25 May 2011)

Log Message

https://bugs.webkit.org/show_bug.cgi?id=61500
Add JSObject::offsetOfPropertyStorage

Reviewed by Sam Weinig.

* jit/JITPropertyAccess.cpp:
(JSC::JIT::compileGetDirectOffset):
(JSC::JIT::compileGetByIdHotPath):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::compilePutDirectOffset):
* jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::compileGetByIdHotPath):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::compilePutDirectOffset):
(JSC::JIT::compileGetDirectOffset):
* runtime/JSObject.h:
(JSC::JSObject::offsetOfPropertyStorage):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (87354 => 87355)


--- trunk/Source/_javascript_Core/ChangeLog	2011-05-26 03:50:11 UTC (rev 87354)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-05-26 04:05:42 UTC (rev 87355)
@@ -1,3 +1,23 @@
+2011-05-25  Gavin Barraclough  <[email protected]>
+
+        Reviewed by Sam Weinig.
+
+        https://bugs.webkit.org/show_bug.cgi?id=61500
+        Add JSObject::offsetOfPropertyStorage
+
+        * jit/JITPropertyAccess.cpp:
+        (JSC::JIT::compileGetDirectOffset):
+        (JSC::JIT::compileGetByIdHotPath):
+        (JSC::JIT::emit_op_put_by_id):
+        (JSC::JIT::compilePutDirectOffset):
+        * jit/JITPropertyAccess32_64.cpp:
+        (JSC::JIT::compileGetByIdHotPath):
+        (JSC::JIT::emit_op_put_by_id):
+        (JSC::JIT::compilePutDirectOffset):
+        (JSC::JIT::compileGetDirectOffset):
+        * runtime/JSObject.h:
+        (JSC::JSObject::offsetOfPropertyStorage):
+
 2011-05-25  Oliver Hunt  <[email protected]>
 
         Reviewed by Geoffrey Garen.

Modified: trunk/Source/_javascript_Core/jit/JITPropertyAccess.cpp (87354 => 87355)


--- trunk/Source/_javascript_Core/jit/JITPropertyAccess.cpp	2011-05-26 03:50:11 UTC (rev 87354)
+++ trunk/Source/_javascript_Core/jit/JITPropertyAccess.cpp	2011-05-26 04:05:42 UTC (rev 87355)
@@ -140,7 +140,7 @@
 
 void JIT::compileGetDirectOffset(RegisterID base, RegisterID result, RegisterID offset, RegisterID scratch)
 {
-    loadPtr(Address(base, OBJECT_OFFSETOF(JSObject, m_propertyStorage)), scratch);
+    loadPtr(Address(base, JSObject::offsetOfPropertyStorage()), scratch);
     loadPtr(BaseIndex(scratch, offset, ScalePtr, 0), result);
 }
 
@@ -419,7 +419,7 @@
     ASSERT_JIT_OFFSET(differenceBetween(hotPathBegin, structureToCompare), patchOffsetGetByIdStructure);
     ASSERT_JIT_OFFSET(differenceBetween(hotPathBegin, structureCheck), patchOffsetGetByIdBranchToSlowCase)
 
-    loadPtr(Address(regT0, OBJECT_OFFSETOF(JSObject, m_propertyStorage)), regT0);
+    loadPtr(Address(regT0, JSObject::offsetOfPropertyStorage()), regT0);
     DataLabelCompact displacementLabel = loadPtrWithCompactAddressOffsetPatch(Address(regT0, patchGetByIdDefaultOffset), regT0);
     ASSERT_JIT_OFFSET_UNUSED(displacementLabel, differenceBetween(hotPathBegin, displacementLabel), patchOffsetGetByIdPropertyMapOffset);
 
@@ -495,7 +495,7 @@
     addSlowCase(branchPtrWithPatch(NotEqual, Address(regT0, JSCell::structureOffset()), structureToCompare, TrustedImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure))));
     ASSERT_JIT_OFFSET(differenceBetween(hotPathBegin, structureToCompare), patchOffsetPutByIdStructure);
 
-    loadPtr(Address(regT0, OBJECT_OFFSETOF(JSObject, m_propertyStorage)), regT0);
+    loadPtr(Address(regT0, JSObject::offsetOfPropertyStorage()), regT0);
     DataLabel32 displacementLabel = storePtrWithAddressOffsetPatch(regT1, Address(regT0, patchPutByIdDefaultOffset));
 
     END_UNINTERRUPTED_SEQUENCE(sequencePutById);
@@ -532,7 +532,7 @@
     if (structure->isUsingInlineStorage())
         offset += JSObject::offsetOfInlineStorage();
     else
-        loadPtr(Address(base, OBJECT_OFFSETOF(JSObject, m_propertyStorage)), base);
+        loadPtr(Address(base, JSObject::offsetOfPropertyStorage()), base);
     storePtr(value, Address(base, offset));
 }
 
@@ -544,7 +544,7 @@
         offset += JSObject::offsetOfInlineStorage();
         loadPtr(Address(base, offset), result);
     } else {
-        loadPtr(Address(base, OBJECT_OFFSETOF(JSObject, m_propertyStorage)), result);
+        loadPtr(Address(base, JSObject::offsetOfPropertyStorage()), result);
         loadPtr(Address(result, offset), result);
     }
 }

Modified: trunk/Source/_javascript_Core/jit/JITPropertyAccess32_64.cpp (87354 => 87355)


--- trunk/Source/_javascript_Core/jit/JITPropertyAccess32_64.cpp	2011-05-26 03:50:11 UTC (rev 87354)
+++ trunk/Source/_javascript_Core/jit/JITPropertyAccess32_64.cpp	2011-05-26 04:05:42 UTC (rev 87355)
@@ -434,7 +434,7 @@
     ASSERT_JIT_OFFSET(differenceBetween(hotPathBegin, structureToCompare), patchOffsetGetByIdStructure);
     ASSERT_JIT_OFFSET(differenceBetween(hotPathBegin, structureCheck), patchOffsetGetByIdBranchToSlowCase);
     
-    loadPtr(Address(regT0, OBJECT_OFFSETOF(JSObject, m_propertyStorage)), regT2);
+    loadPtr(Address(regT0, JSObject::offsetOfPropertyStorage()), regT2);
     DataLabelCompact displacementLabel1 = loadPtrWithCompactAddressOffsetPatch(Address(regT2, patchGetByIdDefaultOffset), regT0); // payload
     ASSERT_JIT_OFFSET(differenceBetween(hotPathBegin, displacementLabel1), patchOffsetGetByIdPropertyMapOffset1);
     DataLabelCompact displacementLabel2 = loadPtrWithCompactAddressOffsetPatch(Address(regT2, patchGetByIdDefaultOffset), regT1); // tag
@@ -508,7 +508,7 @@
     addSlowCase(branchPtrWithPatch(NotEqual, Address(regT0, JSCell::structureOffset()), structureToCompare, TrustedImmPtr(reinterpret_cast<void*>(patchGetByIdDefaultStructure))));
     ASSERT_JIT_OFFSET(differenceBetween(hotPathBegin, structureToCompare), patchOffsetPutByIdStructure);
     
-    loadPtr(Address(regT0, OBJECT_OFFSETOF(JSObject, m_propertyStorage)), regT0);
+    loadPtr(Address(regT0, JSObject::offsetOfPropertyStorage()), regT0);
     DataLabel32 displacementLabel1 = storePtrWithAddressOffsetPatch(regT2, Address(regT0, patchPutByIdDefaultOffset)); // payload
     DataLabel32 displacementLabel2 = storePtrWithAddressOffsetPatch(regT3, Address(regT0, patchPutByIdDefaultOffset)); // tag
     
@@ -545,7 +545,7 @@
     if (structure->isUsingInlineStorage())
         offset += JSObject::offsetOfInlineStorage() /  sizeof(Register);
     else
-        loadPtr(Address(base, OBJECT_OFFSETOF(JSObject, m_propertyStorage)), base);
+        loadPtr(Address(base, JSObject::offsetOfPropertyStorage()), base);
     emitStore(offset, valueTag, valuePayload, base);
 }
 
@@ -558,7 +558,7 @@
         emitLoad(offset, resultTag, resultPayload, base);
     } else {
         RegisterID temp = resultPayload;
-        loadPtr(Address(base, OBJECT_OFFSETOF(JSObject, m_propertyStorage)), temp);
+        loadPtr(Address(base, JSObject::offsetOfPropertyStorage()), temp);
         emitLoad(offset, resultTag, resultPayload, temp);
     }
 }
@@ -1055,7 +1055,7 @@
 {
     ASSERT(sizeof(JSValue) == 8);
     
-    loadPtr(Address(base, OBJECT_OFFSETOF(JSObject, m_propertyStorage)), base);
+    loadPtr(Address(base, JSObject::offsetOfPropertyStorage()), base);
     loadPtr(BaseIndex(base, offset, TimesEight, OBJECT_OFFSETOF(JSValue, u.asBits.payload)), resultPayload);
     loadPtr(BaseIndex(base, offset, TimesEight, OBJECT_OFFSETOF(JSValue, u.asBits.tag)), resultTag);
 }

Modified: trunk/Source/_javascript_Core/runtime/JSObject.h (87354 => 87355)


--- trunk/Source/_javascript_Core/runtime/JSObject.h	2011-05-26 03:50:11 UTC (rev 87354)
+++ trunk/Source/_javascript_Core/runtime/JSObject.h	2011-05-26 04:05:42 UTC (rev 87355)
@@ -245,7 +245,8 @@
         }
 
         static size_t offsetOfInlineStorage();
-        
+        static size_t offsetOfPropertyStorage();
+
         static JS_EXPORTDATA const ClassInfo s_info;
 
     protected:
@@ -381,6 +382,11 @@
     return OBJECT_OFFSETOF(JSFinalObject, m_inlineStorage);
 }
 
+inline size_t JSObject::offsetOfPropertyStorage()
+{
+    return OBJECT_OFFSETOF(JSObject, m_propertyStorage);
+}
+
 inline JSObject* constructEmptyObject(ExecState* exec, Structure* structure)
 {
     return JSFinalObject::create(exec, structure);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to