summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/bytecode/DFGExitProfile.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-05-25 15:09:11 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-05-25 15:09:11 +0200
commita89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd (patch)
treeb7abd9f49ae1d4d2e426a5883bfccd42b8e2ee12 /Source/JavaScriptCore/bytecode/DFGExitProfile.h
parent8d473cf9743f1d30a16a27114e93bd5af5648d23 (diff)
downloadqtwebkit-a89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd.tar.gz
Imported WebKit commit eb5c1b8fe4d4b1b90b5137433fc58a91da0e6878 (http://svn.webkit.org/repository/webkit/trunk@118516)
Diffstat (limited to 'Source/JavaScriptCore/bytecode/DFGExitProfile.h')
-rw-r--r--Source/JavaScriptCore/bytecode/DFGExitProfile.h15
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));