Index: src/global-handles.cc |
diff --git a/src/global-handles.cc b/src/global-handles.cc |
index e519d7077fa5e4fa34517410f427bf73a62a31a9..5b01f61f3af5a1fba7fd1a8064eca55b5a7f2ea1 100644 |
--- a/src/global-handles.cc |
+++ b/src/global-handles.cc |
@@ -429,6 +429,26 @@ GlobalHandles::Node* GlobalHandles::head_ = NULL; |
GlobalHandles::Node* GlobalHandles::first_free_ = NULL; |
GlobalHandles::Node* GlobalHandles::first_deallocated_ = NULL; |
+void GlobalHandles::RecordStats(HeapStats* stats) { |
+ stats->global_handle_count = 0; |
+ stats->weak_global_handle_count = 0; |
+ stats->pending_global_handle_count = 0; |
+ stats->near_death_global_handle_count = 0; |
+ stats->destroyed_global_handle_count = 0; |
+ for (Node* current = head_; current != NULL; current = current->next()) { |
+ stats->global_handle_count++; |
+ if (current->state_ == Node::WEAK) { |
+ stats->weak_global_handle_count++; |
+ } else if (current->state_ == Node::PENDING) { |
+ stats->pending_global_handle_count++; |
+ } else if (current->state_ == Node::NEAR_DEATH) { |
+ stats->near_death_global_handle_count++; |
+ } else if (current->state_ == Node::DESTROYED) { |
+ stats->destroyed_global_handle_count++; |
+ } |
+ } |
+} |
+ |
#ifdef DEBUG |
void GlobalHandles::PrintStats() { |