summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/dfg/DFGOSRExit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGOSRExit.cpp')
-rw-r--r--Source/JavaScriptCore/dfg/DFGOSRExit.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGOSRExit.cpp b/Source/JavaScriptCore/dfg/DFGOSRExit.cpp
index 844be2a7c..bcb98a1ed 100644
--- a/Source/JavaScriptCore/dfg/DFGOSRExit.cpp
+++ b/Source/JavaScriptCore/dfg/DFGOSRExit.cpp
@@ -78,7 +78,16 @@ bool OSRExit::considerAddingAsFrequentExitSiteSlow(CodeBlock* dfgCodeBlock, Code
if (static_cast<double>(m_count) / dfgCodeBlock->speculativeFailCounter() <= Options::osrExitProminenceForFrequentExitSite)
return false;
- return baselineCodeBlockForOriginAndBaselineCodeBlock(m_codeOriginForExitProfile, profiledCodeBlock)->addFrequentExitSite(FrequentExitSite(m_codeOriginForExitProfile.bytecodeIndex, m_kind));
+ FrequentExitSite exitSite;
+
+ if (m_kind == ArgumentsEscaped) {
+ // Count this one globally. It doesn't matter where in the code block the arguments excaped;
+ // the fact that they did is not associated with any particular instruction.
+ exitSite = FrequentExitSite(m_kind);
+ } else
+ exitSite = FrequentExitSite(m_codeOriginForExitProfile.bytecodeIndex, m_kind);
+
+ return baselineCodeBlockForOriginAndBaselineCodeBlock(m_codeOrigin, profiledCodeBlock)->addFrequentExitSite(exitSite);
}
} } // namespace JSC::DFG