Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Unified Diff: runtime/vm/profiler_service.h

Issue 1758653003: Add source position information to profile (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/vm/profiler_service.h
diff --git a/runtime/vm/profiler_service.h b/runtime/vm/profiler_service.h
index 15f3f7d526c8041691c5bc672af32fb2865c297c..eb65158826d2774cba345b9ebe63ffb619bc2f53 100644
--- a/runtime/vm/profiler_service.h
+++ b/runtime/vm/profiler_service.h
@@ -12,6 +12,7 @@
#include "vm/object.h"
#include "vm/tags.h"
#include "vm/thread_interrupter.h"
+#include "vm/token_position.h"
// CPU Profile model and service protocol bits.
// NOTE: For sampling and stack walking related code, see profiler.h.
@@ -30,6 +31,23 @@ class RawFunction;
class SampleFilter;
class ProcessedSampleBuffer;
+class ProfileFunctionSourcePosition {
+ public:
+ explicit ProfileFunctionSourcePosition(TokenPosition token_pos);
+
+ void Tick(bool exclusive);
+
+ TokenPosition token_pos() const { return token_pos_; }
+ intptr_t exclusive_ticks() const { return exclusive_ticks_; }
+ intptr_t inclusive_ticks() const { return inclusive_ticks_; }
+
+ private:
+ TokenPosition token_pos_;
srdjan 2016/03/02 19:02:56 const
Cutch 2016/03/02 19:14:08 Done.
+ intptr_t exclusive_ticks_;
+ intptr_t inclusive_ticks_;
srdjan 2016/03/02 19:02:55 DISALLOW_ALLOCATION
Cutch 2016/03/02 19:14:07 Done.
+};
+
+
// Profile data related to a |Function|.
class ProfileFunction : public ZoneAllocated {
public:
@@ -72,18 +90,25 @@ class ProfileFunction : public ZoneAllocated {
inclusive_ticks_++;
}
- void Tick(bool exclusive, intptr_t inclusive_serial);
+ void Tick(bool exclusive,
+ intptr_t inclusive_serial,
+ TokenPosition token_position);
static const char* KindToCString(Kind kind);
void PrintToJSONArray(JSONArray* functions);
+ bool GetSinglePosition(ProfileFunctionSourcePosition* pfsp);
srdjan 2016/03/02 19:02:56 Add comment about when is true/false returned.
Cutch 2016/03/02 19:14:07 Done.
+
+ void TickSourcePosition(TokenPosition token_position, bool exclusive);
+
private:
const Kind kind_;
const char* name_;
const Function& function_;
const intptr_t table_index_;
ZoneGrowableArray<intptr_t> profile_codes_;
+ ZoneGrowableArray<ProfileFunctionSourcePosition> source_position_ticks_;
intptr_t exclusive_ticks_;
intptr_t inclusive_ticks_;
@@ -376,6 +401,12 @@ class ProfileTrieWalker : public ValueObject {
// Return the number siblings (including yourself).
intptr_t SiblingCount();
+ // If the following conditions are met returns the current token:
+ // 1) This is a function trie.
+ // 2) There is only one token position for a given function.
+ // Will return NULL otherwise.
+ const char* CurrentToken();
+
bool Down();
bool NextSibling();

Powered by Google App Engine
This is Rietveld 408576698