| Index: runtime/vm/profiler_service.h | 
| diff --git a/runtime/vm/profiler_service.h b/runtime/vm/profiler_service.h | 
| index 218bcb9ec168404f87b8c00443ea9240eff90417..4bd64da740283b6478f04b69efff3a5f71f00fb2 100644 | 
| --- a/runtime/vm/profiler_service.h | 
| +++ b/runtime/vm/profiler_service.h | 
| @@ -105,6 +105,14 @@ class ProfileFunction : public ZoneAllocated { | 
|  | 
| void TickSourcePosition(TokenPosition token_position, bool exclusive); | 
|  | 
| +  intptr_t NumSourcePositions() const { | 
| +    return source_position_ticks_.length(); | 
| +  } | 
| + | 
| +  const ProfileFunctionSourcePosition& GetSourcePosition(intptr_t i) const { | 
| +    return source_position_ticks_.At(i); | 
| +  } | 
| + | 
| private: | 
| const Kind kind_; | 
| const char* name_; | 
| @@ -347,6 +355,8 @@ class Profile : public ValueObject { | 
| } | 
| intptr_t sample_count() const { return sample_count_; } | 
|  | 
| +  intptr_t NumFunctions() const; | 
| + | 
| ProfileFunction* GetFunction(intptr_t index); | 
| ProfileCode* GetCode(intptr_t index); | 
| ProfileTrieNode* GetTrieRoot(TrieKind trie_kind); | 
| @@ -354,6 +364,8 @@ class Profile : public ValueObject { | 
| void PrintProfileJSON(JSONStream* stream); | 
| void PrintTimelineJSON(JSONStream* stream); | 
|  | 
| +  ProfileFunction* FindFunction(const Function& function); | 
| + | 
| private: | 
| void PrintHeaderJSON(JSONObject* obj); | 
| void PrintTimelineFrameJSON(JSONObject* frames, | 
|  |