2008-05-13 Kevin McCullough <kmccullough@apple.com>
[WebKit-https.git] / JavaScriptCore / profiler / Profiler.h
index 3732994..17a9344 100644 (file)
@@ -29,8 +29,8 @@
 #ifndef Profiler_h
 #define Profiler_h
 
-#include "FunctionCallProfile.h"
-#include <wtf/OwnPtr.h>
+#include "Profile.h"
+#include <wtf/RefPtr.h>
 
 namespace KJS {
 
@@ -39,21 +39,23 @@ namespace KJS {
     class JSObject;
 
     class Profiler {
-        typedef Vector<UString>::const_iterator NameIterator;
-
     public:
         static Profiler* profiler();
         static void debugLog(UString);
 
-        void startProfiling(unsigned Identifier);
+        void startProfiling(unsigned pageGroupIdentifier, const UString&);
         void stopProfiling();
+
         void willExecute(ExecState*, JSObject* calledFunction);
         void willExecute(ExecState*, const UString& sourceURL, int startingLineNumber);
         void didExecute(ExecState*, JSObject* calledFunction);
         void didExecute(ExecState*, const UString& sourceURL, int startingLineNumber);
 
-        void printDataInspectorStyle() const;
-        void printDataSampleStyle() const;
+        const Vector<RefPtr<Profile> >& allProfiles() { return m_allProfiles; };
+        void clearProfiles() { if (!m_profiling) m_allProfiles.clear(); };
+
+        void printDataInspectorStyle(unsigned whichProfile) const;
+        void printDataSampleStyle(unsigned whichProfile) const;
 
     private:
         Profiler()
@@ -62,14 +64,11 @@ namespace KJS {
         {
         }
 
-        void insertStackNamesInTree(const Vector<UString>& callStackNames);
-
         bool m_profiling;
         unsigned m_pageGroupIdentifier;
 
-        // FIXME: Make this a vector of FunctionCallProfiles where each one is the
-        // root of a new thread.
-        OwnPtr<FunctionCallProfile> m_callTree;
+        RefPtr<Profile> m_currentProfile;
+        Vector<RefPtr<Profile> > m_allProfiles;
     };
 
 } // namespace KJS