diff options
Diffstat (limited to 'Source/JavaScriptCore/bytecode/DFGExitProfile.h')
-rw-r--r-- | Source/JavaScriptCore/bytecode/DFGExitProfile.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/bytecode/DFGExitProfile.h b/Source/JavaScriptCore/bytecode/DFGExitProfile.h index 31db084f5..09f9ee075 100644 --- a/Source/JavaScriptCore/bytecode/DFGExitProfile.h +++ b/Source/JavaScriptCore/bytecode/DFGExitProfile.h @@ -39,6 +39,7 @@ enum ExitKind { Overflow, // We exited because of overflow. NegativeZero, // We exited because we encountered negative zero. InadequateCoverage, // We exited because we ended up in code that didn't have profiling coverage. + ArgumentsEscaped, // We exited because arguments escaped but we didn't expect them to. Uncountable, // We exited for none of the above reasons, and we should not count it. Most uses of this should be viewed as a FIXME. }; @@ -96,6 +97,15 @@ public: ASSERT(exitKindIsCountable(kind)); } + // Use this constructor if you wish for the exit site to be counted globally within its + // code block. + explicit FrequentExitSite(ExitKind kind) + : m_bytecodeOffset(0) + , m_kind(kind) + { + ASSERT(exitKindIsCountable(kind)); + } + bool operator!() const { return m_kind == ExitKindUnset; @@ -178,6 +188,11 @@ public: return m_frequentExitSites.find(site) != m_frequentExitSites.end(); } + bool hasExitSite(ExitKind kind) const + { + return hasExitSite(FrequentExitSite(kind)); + } + bool hasExitSite(unsigned bytecodeIndex, ExitKind kind) const { return hasExitSite(FrequentExitSite(bytecodeIndex, kind)); |