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