]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - bytecode/DFGExitProfile.cpp
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / bytecode / DFGExitProfile.cpp
index d36878fc9e5bbdab7d8421d0cfeb3407a13764c5..40a25ced61a2f59256fa029677f232c5565f91df 100644 (file)
 #include "config.h"
 #include "DFGExitProfile.h"
 
-#include <wtf/PassOwnPtr.h>
+#if ENABLE(DFG_JIT)
 
 namespace JSC { namespace DFG {
 
 ExitProfile::ExitProfile() { }
 ExitProfile::~ExitProfile() { }
 
-bool ExitProfile::add(const FrequentExitSite& site)
+bool ExitProfile::add(const ConcurrentJITLocker&, const FrequentExitSite& site)
 {
+    ASSERT(site.jitType() != ExitFromAnything);
+    
     // If we've never seen any frequent exits then create the list and put this site
     // into it.
     if (!m_frequentExitSites) {
-        m_frequentExitSites = adoptPtr(new Vector<FrequentExitSite>());
+        m_frequentExitSites = std::make_unique<Vector<FrequentExitSite>>();
         m_frequentExitSites->append(site);
         return true;
     }
@@ -70,19 +72,22 @@ Vector<FrequentExitSite> ExitProfile::exitSitesFor(unsigned bytecodeIndex)
     return result;
 }
 
-bool ExitProfile::hasExitSite(const FrequentExitSite& site) const
+bool ExitProfile::hasExitSite(const ConcurrentJITLocker&, const FrequentExitSite& site) const
 {
     if (!m_frequentExitSites)
         return false;
     
     for (unsigned i = m_frequentExitSites->size(); i--;) {
-        if (m_frequentExitSites->at(i) == site)
+        if (site.subsumes(m_frequentExitSites->at(i)))
             return true;
     }
     return false;
 }
 
-QueryableExitProfile::QueryableExitProfile(const ExitProfile& profile)
+QueryableExitProfile::QueryableExitProfile() { }
+QueryableExitProfile::~QueryableExitProfile() { }
+
+void QueryableExitProfile::initialize(const ConcurrentJITLocker&, const ExitProfile& profile)
 {
     if (!profile.m_frequentExitSites)
         return;
@@ -91,6 +96,6 @@ QueryableExitProfile::QueryableExitProfile(const ExitProfile& profile)
         m_frequentExitSites.add(profile.m_frequentExitSites->at(i));
 }
 
-QueryableExitProfile::~QueryableExitProfile() { }
-
 } } // namespace JSC::DFG
+
+#endif