Modified: trunk/Source/_javascript_Core/ChangeLog (283386 => 283387)
--- trunk/Source/_javascript_Core/ChangeLog 2021-10-01 18:41:08 UTC (rev 283386)
+++ trunk/Source/_javascript_Core/ChangeLog 2021-10-01 18:51:43 UTC (rev 283387)
@@ -1,3 +1,24 @@
+2021-10-01 Yusuke Suzuki <[email protected]>
+
+ [JSC] Remove CodeBlock::m_numberOfNonArgumentValueProfiles since we can get the same value from UnlinkedCodeBlock
+ https://bugs.webkit.org/show_bug.cgi?id=231066
+
+ Reviewed by Robin Morisset.
+
+ Since UnlinkedCodeBlock has UnlinkedValueProfile FixedVector, we can get CodeBlock::m_numberOfNonArgumentValueProfiles
+ from UnlinkedCodeBlock. So CodeBlock does not need to keep it in its member.
+ We also reorder some fields to shrink sizeof(CodeBlock) after this change.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::CodeBlock):
+ (JSC::CodeBlock::finishCreation):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::numberOfNonArgumentValueProfiles):
+ (JSC::CodeBlock::totalNumberOfValueProfiles):
+ * bytecode/UnlinkedCodeBlock.h:
+ (JSC::UnlinkedCodeBlock::numberOfValueProfiles const):
+ (JSC::UnlinkedCodeBlock::numberOfArrayProfiles const):
+
2021-10-01 Olivier Blin <[email protected]>
[JSC][GLib] Fix typo in WrapperMap creation methods
Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp (283386 => 283387)
--- trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp 2021-10-01 18:41:08 UTC (rev 283386)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp 2021-10-01 18:51:43 UTC (rev 283387)
@@ -295,9 +295,6 @@
, m_constantRegisters(other.m_constantRegisters)
, m_functionDecls(other.m_functionDecls)
, m_functionExprs(other.m_functionExprs)
- , m_osrExitCounter(0)
- , m_optimizationDelayCounter(0)
- , m_reoptimizationRetryCounter(0)
, m_metadata(other.m_metadata)
, m_creationTime(MonotonicTime::now())
{
@@ -343,9 +340,6 @@
, m_ownerExecutable(vm, this, ownerExecutable)
, m_vm(&vm)
, m_instructionsRawPointer(unlinkedCodeBlock->instructions().rawPointer())
- , m_osrExitCounter(0)
- , m_optimizationDelayCounter(0)
- , m_reoptimizationRetryCounter(0)
, m_metadata(unlinkedCodeBlock->metadata().link())
, m_creationTime(MonotonicTime::now())
{
@@ -437,7 +431,6 @@
auto link_profile = [&](const auto& /*instruction*/, auto /*bytecode*/, auto& metadata) {
static_assert(std::is_same_v<ValueProfile, decltype(metadata.m_profile)>);
- m_numberOfNonArgumentValueProfiles++;
};
auto link_objectAllocationProfile = [&](const auto& /*instruction*/, auto bytecode, auto& metadata) {
@@ -536,15 +529,11 @@
case op_iterator_open: {
INITIALIZE_METADATA(OpIteratorOpen)
-
- m_numberOfNonArgumentValueProfiles += 3;
break;
}
case op_iterator_next: {
INITIALIZE_METADATA(OpIteratorNext)
-
- m_numberOfNonArgumentValueProfiles += 3;
break;
}
Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.h (283386 => 283387)
--- trunk/Source/_javascript_Core/bytecode/CodeBlock.h 2021-10-01 18:41:08 UTC (rev 283386)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.h 2021-10-01 18:51:43 UTC (rev 283387)
@@ -917,8 +917,8 @@
template<typename Visitor> void stronglyVisitWeakReferences(const ConcurrentJSLocker&, Visitor&);
template<typename Visitor> void visitOSRExitTargets(const ConcurrentJSLocker&, Visitor&);
- unsigned numberOfNonArgumentValueProfiles() { return m_numberOfNonArgumentValueProfiles; }
- unsigned totalNumberOfValueProfiles() { return numberOfArgumentValueProfiles() + numberOfNonArgumentValueProfiles(); }
+ unsigned numberOfNonArgumentValueProfiles() { return totalNumberOfValueProfiles() - numberOfArgumentValueProfiles(); }
+ unsigned totalNumberOfValueProfiles() { return m_unlinkedCode->numberOfValueProfiles(); }
ValueProfile* tryGetValueProfileForBytecodeIndex(BytecodeIndex);
Seconds timeSinceCreation()
@@ -942,7 +942,7 @@
unsigned m_numVars;
unsigned m_numParameters;
unsigned m_numberOfArgumentsToSkip { 0 };
- unsigned m_numberOfNonArgumentValueProfiles { 0 };
+ uint32_t m_osrExitCounter { 0 };
union {
unsigned m_debuggerRequests;
struct {
@@ -989,10 +989,9 @@
WriteBarrier<CodeBlock> m_alternative;
BaselineExecutionCounter m_jitExecuteCounter;
- uint32_t m_osrExitCounter;
- uint16_t m_optimizationDelayCounter;
- uint16_t m_reoptimizationRetryCounter;
+ uint16_t m_optimizationDelayCounter { 0 };
+ uint16_t m_reoptimizationRetryCounter { 0 };
RefPtr<MetadataTable> m_metadata;
Modified: trunk/Source/_javascript_Core/bytecode/UnlinkedCodeBlock.h (283386 => 283387)
--- trunk/Source/_javascript_Core/bytecode/UnlinkedCodeBlock.h 2021-10-01 18:41:08 UTC (rev 283386)
+++ trunk/Source/_javascript_Core/bytecode/UnlinkedCodeBlock.h 2021-10-01 18:51:43 UTC (rev 283387)
@@ -355,6 +355,8 @@
void allocateSharedProfiles(unsigned numBinaryArithProfiles, unsigned numUnaryArithProfiles);
UnlinkedValueProfile& unlinkedValueProfile(unsigned index) { return m_valueProfiles[index]; }
UnlinkedArrayProfile& unlinkedArrayProfile(unsigned index) { return m_arrayProfiles[index]; }
+ unsigned numberOfValueProfiles() const { return m_valueProfiles.size(); }
+ unsigned numberOfArrayProfiles() const { return m_arrayProfiles.size(); }
#if ASSERT_ENABLED
bool hasIdentifier(UniquedStringImpl*);