From a89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 25 May 2012 15:09:11 +0200 Subject: Imported WebKit commit eb5c1b8fe4d4b1b90b5137433fc58a91da0e6878 (http://svn.webkit.org/repository/webkit/trunk@118516) --- Source/JavaScriptCore/bytecode/DFGExitProfile.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Source/JavaScriptCore/bytecode/DFGExitProfile.h') 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)); -- cgit v1.2.1