summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/bytecode/DFGExitProfile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/bytecode/DFGExitProfile.cpp')
-rw-r--r--Source/JavaScriptCore/bytecode/DFGExitProfile.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/bytecode/DFGExitProfile.cpp b/Source/JavaScriptCore/bytecode/DFGExitProfile.cpp
index 69fdc3737..d36878fc9 100644
--- a/Source/JavaScriptCore/bytecode/DFGExitProfile.cpp
+++ b/Source/JavaScriptCore/bytecode/DFGExitProfile.cpp
@@ -55,6 +55,33 @@ bool ExitProfile::add(const FrequentExitSite& site)
return true;
}
+Vector<FrequentExitSite> ExitProfile::exitSitesFor(unsigned bytecodeIndex)
+{
+ Vector<FrequentExitSite> result;
+
+ if (!m_frequentExitSites)
+ return result;
+
+ for (unsigned i = 0; i < m_frequentExitSites->size(); ++i) {
+ if (m_frequentExitSites->at(i).bytecodeOffset() == bytecodeIndex)
+ result.append(m_frequentExitSites->at(i));
+ }
+
+ return result;
+}
+
+bool ExitProfile::hasExitSite(const FrequentExitSite& site) const
+{
+ if (!m_frequentExitSites)
+ return false;
+
+ for (unsigned i = m_frequentExitSites->size(); i--;) {
+ if (m_frequentExitSites->at(i) == site)
+ return true;
+ }
+ return false;
+}
+
QueryableExitProfile::QueryableExitProfile(const ExitProfile& profile)
{
if (!profile.m_frequentExitSites)