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

Side by Side Diff: src/profile-generator.cc

Issue 9323064: I'd like to introduce kSynthetic type of nodes for Heap Profiler. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 1113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1124 switch (type()) { 1124 switch (type()) {
1125 case kHidden: return "/hidden/"; 1125 case kHidden: return "/hidden/";
1126 case kObject: return "/object/"; 1126 case kObject: return "/object/";
1127 case kClosure: return "/closure/"; 1127 case kClosure: return "/closure/";
1128 case kString: return "/string/"; 1128 case kString: return "/string/";
1129 case kCode: return "/code/"; 1129 case kCode: return "/code/";
1130 case kArray: return "/array/"; 1130 case kArray: return "/array/";
1131 case kRegExp: return "/regexp/"; 1131 case kRegExp: return "/regexp/";
1132 case kHeapNumber: return "/number/"; 1132 case kHeapNumber: return "/number/";
1133 case kNative: return "/native/"; 1133 case kNative: return "/native/";
1134 case kArtificial: return "/artificial/";
1134 default: return "???"; 1135 default: return "???";
1135 } 1136 }
1136 } 1137 }
1137 1138
1138 1139
1139 int HeapEntry::EntriesSize(int entries_count, 1140 int HeapEntry::EntriesSize(int entries_count,
1140 int children_count, 1141 int children_count,
1141 int retainers_count) { 1142 int retainers_count) {
1142 return sizeof(HeapEntry) * entries_count // NOLINT 1143 return sizeof(HeapEntry) * entries_count // NOLINT
1143 + sizeof(HeapGraphEdge) * children_count // NOLINT 1144 + sizeof(HeapGraphEdge) * children_count // NOLINT
(...skipping 1587 matching lines...) Expand 10 before | Expand all | Expand 10 after
2731 } 2732 }
2732 2733
2733 2734
2734 HeapEntry* NativeObjectsExplorer::AllocateEntry( 2735 HeapEntry* NativeObjectsExplorer::AllocateEntry(
2735 HeapThing ptr, int children_count, int retainers_count) { 2736 HeapThing ptr, int children_count, int retainers_count) {
2736 v8::RetainedObjectInfo* info = 2737 v8::RetainedObjectInfo* info =
2737 reinterpret_cast<v8::RetainedObjectInfo*>(ptr); 2738 reinterpret_cast<v8::RetainedObjectInfo*>(ptr);
2738 intptr_t elements = info->GetElementCount(); 2739 intptr_t elements = info->GetElementCount();
2739 intptr_t size = info->GetSizeInBytes(); 2740 intptr_t size = info->GetSizeInBytes();
2740 return snapshot_->AddEntry( 2741 return snapshot_->AddEntry(
2741 HeapEntry::kNative, 2742 static_cast<HeapEntry::Type>(info->GetType()),
2742 elements != -1 ? 2743 elements != -1 ?
2743 collection_->names()->GetFormatted( 2744 collection_->names()->GetFormatted(
2744 "%s / %" V8_PTR_PREFIX "d entries", 2745 "%s / %" V8_PTR_PREFIX "d entries",
2745 info->GetLabel(), 2746 info->GetLabel(),
2746 info->GetElementCount()) : 2747 info->GetElementCount()) :
2747 collection_->names()->GetCopy(info->GetLabel()), 2748 collection_->names()->GetCopy(info->GetLabel()),
2748 HeapObjectsMap::GenerateId(info), 2749 HeapObjectsMap::GenerateId(info),
2749 size != -1 ? static_cast<int>(size) : 0, 2750 size != -1 ? static_cast<int>(size) : 0,
2750 children_count, 2751 children_count,
2751 retainers_count); 2752 retainers_count);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
2855 virtual void Dispose() { 2856 virtual void Dispose() {
2856 CHECK(!disposed_); 2857 CHECK(!disposed_);
2857 disposed_ = true; 2858 disposed_ = true;
2858 delete this; 2859 delete this;
2859 } 2860 }
2860 virtual bool IsEquivalent(RetainedObjectInfo* other) { 2861 virtual bool IsEquivalent(RetainedObjectInfo* other) {
2861 return hash_ == other->GetHash() && !strcmp(label_, other->GetLabel()); 2862 return hash_ == other->GetHash() && !strcmp(label_, other->GetLabel());
2862 } 2863 }
2863 virtual intptr_t GetHash() { return hash_; } 2864 virtual intptr_t GetHash() { return hash_; }
2864 virtual const char* GetLabel() { return label_; } 2865 virtual const char* GetLabel() { return label_; }
2866 virtual HeapGraphNode::Type GetType() const {
2867 return HeapGraphNode::kArtificial;
2868 }
2865 2869
2866 private: 2870 private:
2867 bool disposed_; 2871 bool disposed_;
2868 intptr_t hash_; 2872 intptr_t hash_;
2869 const char* label_; 2873 const char* label_;
2870 }; 2874 };
2871 2875
2872 2876
2873 NativeGroupRetainedObjectInfo* NativeObjectsExplorer::FindOrAddGroupInfo( 2877 NativeGroupRetainedObjectInfo* NativeObjectsExplorer::FindOrAddGroupInfo(
2874 const char* label) { 2878 const char* label) {
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after
3540 "," JSON_S("types") ":" JSON_A( 3544 "," JSON_S("types") ":" JSON_A(
3541 JSON_A( 3545 JSON_A(
3542 JSON_S("hidden") 3546 JSON_S("hidden")
3543 "," JSON_S("array") 3547 "," JSON_S("array")
3544 "," JSON_S("string") 3548 "," JSON_S("string")
3545 "," JSON_S("object") 3549 "," JSON_S("object")
3546 "," JSON_S("code") 3550 "," JSON_S("code")
3547 "," JSON_S("closure") 3551 "," JSON_S("closure")
3548 "," JSON_S("regexp") 3552 "," JSON_S("regexp")
3549 "," JSON_S("number") 3553 "," JSON_S("number")
3550 "," JSON_S("native")) 3554 "," JSON_S("native")
3555 "," JSON_S("artificial"))
3551 "," JSON_S("string") 3556 "," JSON_S("string")
3552 "," JSON_S("number") 3557 "," JSON_S("number")
3553 "," JSON_S("number") 3558 "," JSON_S("number")
3554 "," JSON_S("number") 3559 "," JSON_S("number")
3555 "," JSON_S("number") 3560 "," JSON_S("number")
3556 "," JSON_S("number") 3561 "," JSON_S("number")
3557 "," JSON_O( 3562 "," JSON_O(
3558 JSON_S("fields") ":" JSON_A( 3563 JSON_S("fields") ":" JSON_A(
3559 JSON_S("type") 3564 JSON_S("type")
3560 "," JSON_S("name_or_index") 3565 "," JSON_S("name_or_index")
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
3695 3700
3696 3701
3697 void HeapSnapshotJSONSerializer::SortHashMap( 3702 void HeapSnapshotJSONSerializer::SortHashMap(
3698 HashMap* map, List<HashMap::Entry*>* sorted_entries) { 3703 HashMap* map, List<HashMap::Entry*>* sorted_entries) {
3699 for (HashMap::Entry* p = map->Start(); p != NULL; p = map->Next(p)) 3704 for (HashMap::Entry* p = map->Start(); p != NULL; p = map->Next(p))
3700 sorted_entries->Add(p); 3705 sorted_entries->Add(p);
3701 sorted_entries->Sort(SortUsingEntryValue); 3706 sorted_entries->Sort(SortUsingEntryValue);
3702 } 3707 }
3703 3708
3704 } } // namespace v8::internal 3709 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698