Index: src/profiler/profile-generator.h |
diff --git a/src/profiler/profile-generator.h b/src/profiler/profile-generator.h |
index 179d4114293eedbd9060e9a9786fe1abcab77aac..253fce38ab3143e389cea8851e07888b7d693c99 100644 |
--- a/src/profiler/profile-generator.h |
+++ b/src/profiler/profile-generator.h |
@@ -183,7 +183,7 @@ class ProfileTree; |
class ProfileNode { |
public: |
- inline ProfileNode(ProfileTree* tree, CodeEntry* entry); |
+ inline ProfileNode(ProfileTree* tree, CodeEntry* entry, ProfileNode* parent); |
ProfileNode* FindChild(CodeEntry* entry); |
ProfileNode* FindOrAddChild(CodeEntry* entry); |
@@ -196,6 +196,7 @@ class ProfileNode { |
const List<ProfileNode*>* children() const { return &children_list_; } |
unsigned id() const { return id_; } |
unsigned function_id() const; |
+ ProfileNode* parent() const { return parent_; } |
unsigned int GetHitLineCount() const { return line_ticks_.occupancy(); } |
bool GetLineTicks(v8::CpuProfileNode::LineTick* entries, |
unsigned int length) const; |
@@ -223,6 +224,7 @@ class ProfileNode { |
// Mapping from CodeEntry* to ProfileNode* |
base::CustomMatcherHashMap children_; |
List<ProfileNode*> children_list_; |
+ ProfileNode* parent_; |
unsigned id_; |
base::CustomMatcherHashMap line_ticks_; |
@@ -251,10 +253,18 @@ class ProfileTree { |
Isolate* isolate() const { return isolate_; } |
+ void EnqueueNode(const ProfileNode* node) { pending_nodes_.push_back(node); } |
+ size_t pending_nodes_count() const { return pending_nodes_.size(); } |
+ std::vector<const ProfileNode*> TakePendingNodes() { |
+ return std::move(pending_nodes_); |
+ } |
+ |
private: |
template <typename Callback> |
void TraverseDepthFirst(Callback* callback); |
+ std::vector<const ProfileNode*> pending_nodes_; |
+ |
CodeEntry root_entry_; |
unsigned next_node_id_; |
ProfileNode* root_; |
@@ -274,7 +284,7 @@ class CpuProfile { |
// Add pc -> ... -> main() call path to the profile. |
void AddPath(base::TimeTicks timestamp, const std::vector<CodeEntry*>& path, |
int src_line, bool update_stats); |
- void CalculateTotalTicksAndSamplingRate(); |
+ void FinishProfile(); |
const char* title() const { return title_; } |
const ProfileTree* top_down() const { return &top_down_; } |
@@ -294,6 +304,8 @@ class CpuProfile { |
void Print(); |
private: |
+ void StreamPendingTraceEvents(); |
+ |
const char* title_; |
bool record_samples_; |
base::TimeTicks start_time_; |
@@ -302,6 +314,7 @@ class CpuProfile { |
List<base::TimeTicks> timestamps_; |
ProfileTree top_down_; |
CpuProfiler* const profiler_; |
+ int streaming_next_sample_; |
DISALLOW_COPY_AND_ASSIGN(CpuProfile); |
}; |