Title: [253943] trunk/Source/_javascript_Core
Revision
253943
Author
[email protected]
Date
2019-12-29 21:36:31 -0800 (Sun, 29 Dec 2019)

Log Message

[JSC] Remove WTF::loadLoadFence from JSFunction::rareData()
https://bugs.webkit.org/show_bug.cgi?id=205625

Reviewed by Mark Lam.

WTF::loadLoadFence() is not necessary when loading FunctionRareData from JSFunction since we ensured that stored FunctionRareData
is already baked by emitting WTF::storeStoreFence().

* runtime/JSFunction.h:
(JSC::JSFunction::rareData const):
(JSC::JSFunction::rareData): Deleted.
* runtime/JSFunctionInlines.h:
(JSC::JSFunction::hasReifiedLength const):
(JSC::JSFunction::hasReifiedName const):
(JSC::JSFunction::areNameAndLengthOriginal):
(JSC::JSFunction::ensureRareDataAndAllocationProfile):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (253942 => 253943)


--- trunk/Source/_javascript_Core/ChangeLog	2019-12-30 04:43:56 UTC (rev 253942)
+++ trunk/Source/_javascript_Core/ChangeLog	2019-12-30 05:36:31 UTC (rev 253943)
@@ -1,3 +1,22 @@
+2019-12-29  Yusuke Suzuki  <[email protected]>
+
+        [JSC] Remove WTF::loadLoadFence from JSFunction::rareData()
+        https://bugs.webkit.org/show_bug.cgi?id=205625
+
+        Reviewed by Mark Lam.
+
+        WTF::loadLoadFence() is not necessary when loading FunctionRareData from JSFunction since we ensured that stored FunctionRareData
+        is already baked by emitting WTF::storeStoreFence().
+
+        * runtime/JSFunction.h:
+        (JSC::JSFunction::rareData const):
+        (JSC::JSFunction::rareData): Deleted.
+        * runtime/JSFunctionInlines.h:
+        (JSC::JSFunction::hasReifiedLength const):
+        (JSC::JSFunction::hasReifiedName const):
+        (JSC::JSFunction::areNameAndLengthOriginal):
+        (JSC::JSFunction::ensureRareDataAndAllocationProfile):
+
 2019-12-28  Yusuke Suzuki  <[email protected]>
 
         Unreviewed, rename `.executable` to `.isExecutable`

Modified: trunk/Source/_javascript_Core/runtime/JSFunction.h (253942 => 253943)


--- trunk/Source/_javascript_Core/runtime/JSFunction.h	2019-12-30 04:43:56 UTC (rev 253942)
+++ trunk/Source/_javascript_Core/runtime/JSFunction.h	2019-12-30 05:36:31 UTC (rev 253943)
@@ -136,13 +136,9 @@
 
     FunctionRareData* ensureRareDataAndAllocationProfile(JSGlobalObject*, unsigned inlineCapacity);
 
-    FunctionRareData* rareData()
+    FunctionRareData* rareData() const
     {
         uintptr_t executableOrRareData = m_executableOrRareData;
-        // The JS thread may be concurrently creating the rare data
-        // If we see it, we want to ensure it has been properly created
-        WTF::loadLoadFence();
-
         if (executableOrRareData & rareDataTag)
             return bitwise_cast<FunctionRareData*>(executableOrRareData & ~rareDataTag);
         return nullptr;

Modified: trunk/Source/_javascript_Core/runtime/JSFunctionInlines.h (253942 => 253943)


--- trunk/Source/_javascript_Core/runtime/JSFunctionInlines.h	2019-12-30 04:43:56 UTC (rev 253942)
+++ trunk/Source/_javascript_Core/runtime/JSFunctionInlines.h	2019-12-30 05:36:31 UTC (rev 253943)
@@ -99,32 +99,23 @@
 
 inline bool JSFunction::hasReifiedLength() const
 {
-    // FIXME: Use JSFunction::rareData() once WTF::loadLoadFence is removed.
-    // https://bugs.webkit.org/show_bug.cgi?id=205625
-    uintptr_t executableOrRareData = m_executableOrRareData;
-    if (executableOrRareData & rareDataTag)
-        return bitwise_cast<FunctionRareData*>(executableOrRareData & ~rareDataTag)->hasReifiedLength();
+    if (FunctionRareData* rareData = this->rareData())
+        return rareData->hasReifiedLength();
     return false;
 }
 
 inline bool JSFunction::hasReifiedName() const
 {
-    // FIXME: Use JSFunction::rareData() once WTF::loadLoadFence is removed.
-    // https://bugs.webkit.org/show_bug.cgi?id=205625
-    uintptr_t executableOrRareData = m_executableOrRareData;
-    if (executableOrRareData & rareDataTag)
-        return bitwise_cast<FunctionRareData*>(executableOrRareData & ~rareDataTag)->hasReifiedName();
+    if (FunctionRareData* rareData = this->rareData())
+        return rareData->hasReifiedName();
     return false;
 }
 
 inline bool JSFunction::areNameAndLengthOriginal(VM&)
 {
-    // FIXME: Use JSFunction::rareData() once WTF::loadLoadFence is removed.
-    // https://bugs.webkit.org/show_bug.cgi?id=205625
-    uintptr_t executableOrRareData = m_executableOrRareData;
-    if (!(executableOrRareData & rareDataTag))
+    FunctionRareData* rareData = this->rareData();
+    if (!rareData)
         return true;
-    FunctionRareData* rareData = bitwise_cast<FunctionRareData*>(executableOrRareData & ~rareDataTag);
     if (rareData->hasModifiedName())
         return false;
     if (rareData->hasModifiedLength())
@@ -154,13 +145,10 @@
 
 inline FunctionRareData* JSFunction::ensureRareDataAndAllocationProfile(JSGlobalObject* globalObject, unsigned inlineCapacity)
 {
-    // FIXME: Use JSFunction::rareData() once WTF::loadLoadFence is removed.
-    // https://bugs.webkit.org/show_bug.cgi?id=205625
     ASSERT(canUseAllocationProfile());
-    uintptr_t executableOrRareData = m_executableOrRareData;
-    if (!(executableOrRareData & rareDataTag))
+    FunctionRareData* rareData = this->rareData();
+    if (!rareData)
         return allocateAndInitializeRareData(globalObject, inlineCapacity);
-    FunctionRareData* rareData = bitwise_cast<FunctionRareData*>(executableOrRareData & ~rareDataTag);
     if (UNLIKELY(!rareData->isObjectAllocationProfileInitialized()))
         return initializeRareData(globalObject, inlineCapacity);
     return rareData;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to