Title: [283387] trunk/Source/_javascript_Core
Revision
283387
Author
[email protected]
Date
2021-10-01 11:51:43 -0700 (Fri, 01 Oct 2021)

Log Message

[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):

Modified Paths

Diff

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*);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to