2008-05-09 Kevin McCullough <kmccullough@apple.com>
[WebKit-https.git] / JavaScriptCore / profiler / Profiler.h
index 3732994..ab9ddad 100644 (file)
@@ -29,7 +29,7 @@
 #ifndef Profiler_h
 #define Profiler_h
 
-#include "FunctionCallProfile.h"
+#include "Profile.h"
 #include <wtf/OwnPtr.h>
 
 namespace KJS {
@@ -39,21 +39,25 @@ namespace KJS {
     class JSObject;
 
     class Profiler {
-        typedef Vector<UString>::const_iterator NameIterator;
-
     public:
         static Profiler* profiler();
         static void debugLog(UString);
 
-        void startProfiling(unsigned Identifier);
+        ~Profiler() { deleteAllValues(m_allProfiles); }
+
+        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;
+        Vector<Profile*>& allProfiles() { return m_allProfiles; };
+        void clearProfiles() { if (!m_profiling) deleteAllValues(m_allProfiles); };
+
+        void printDataInspectorStyle(unsigned whichProfile) const;
+        void printDataSampleStyle(unsigned whichProfile) const;
 
     private:
         Profiler()
@@ -62,14 +66,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;
+        OwnPtr<Profile> m_currentProfile;
+        Vector<Profile*> m_allProfiles;
     };
 
 } // namespace KJS