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

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

Issue 9594020: Fix the heap profiler crash caused by memory layout changes between passes. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 9 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
« no previous file with comments | « no previous file | src/profile-generator.cc » ('j') | src/profile-generator.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 523 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 Type type, 534 Type type,
535 const char* name, 535 const char* name,
536 uint64_t id, 536 uint64_t id,
537 int self_size, 537 int self_size,
538 int children_count, 538 int children_count,
539 int retainers_count); 539 int retainers_count);
540 540
541 HeapSnapshot* snapshot() { return snapshot_; } 541 HeapSnapshot* snapshot() { return snapshot_; }
542 Type type() { return static_cast<Type>(type_); } 542 Type type() { return static_cast<Type>(type_); }
543 const char* name() { return name_; } 543 const char* name() { return name_; }
544 void set_name(const char* name) { name_ = name; }
544 inline uint64_t id(); 545 inline uint64_t id();
545 int self_size() { return self_size_; } 546 int self_size() { return self_size_; }
546 int retained_size() { return retained_size_; } 547 int retained_size() { return retained_size_; }
547 void add_retained_size(int size) { retained_size_ += size; } 548 void add_retained_size(int size) { retained_size_ += size; }
548 void set_retained_size(int value) { retained_size_ = value; } 549 void set_retained_size(int value) { retained_size_ = value; }
549 int ordered_index() { return ordered_index_; } 550 int ordered_index() { return ordered_index_; }
550 void set_ordered_index(int value) { ordered_index_ = value; } 551 void set_ordered_index(int value) { ordered_index_ = value; }
551 552
552 Vector<HeapGraphEdge> children() { 553 Vector<HeapGraphEdge> children() {
553 return Vector<HeapGraphEdge>(children_arr(), children_count_); } 554 return Vector<HeapGraphEdge>(children_arr(), children_count_); }
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
911 class V8HeapExplorer : public HeapEntriesAllocator { 912 class V8HeapExplorer : public HeapEntriesAllocator {
912 public: 913 public:
913 V8HeapExplorer(HeapSnapshot* snapshot, 914 V8HeapExplorer(HeapSnapshot* snapshot,
914 SnapshottingProgressReportingInterface* progress); 915 SnapshottingProgressReportingInterface* progress);
915 virtual ~V8HeapExplorer(); 916 virtual ~V8HeapExplorer();
916 virtual HeapEntry* AllocateEntry( 917 virtual HeapEntry* AllocateEntry(
917 HeapThing ptr, int children_count, int retainers_count); 918 HeapThing ptr, int children_count, int retainers_count);
918 void AddRootEntries(SnapshotFillerInterface* filler); 919 void AddRootEntries(SnapshotFillerInterface* filler);
919 int EstimateObjectsCount(HeapIterator* iterator); 920 int EstimateObjectsCount(HeapIterator* iterator);
920 bool IterateAndExtractReferences(SnapshotFillerInterface* filler); 921 bool IterateAndExtractReferences(SnapshotFillerInterface* filler);
922 bool IterateAndSetObjectNames(SnapshotFillerInterface* filler);
921 void TagGlobalObjects(); 923 void TagGlobalObjects();
922 924
923 static String* GetConstructorName(JSObject* object); 925 static String* GetConstructorName(JSObject* object);
924 926
925 static HeapObject* const kInternalRootObject; 927 static HeapObject* const kInternalRootObject;
926 928
927 private: 929 private:
928 HeapEntry* AddEntry( 930 HeapEntry* AddEntry(
929 HeapObject* object, int children_count, int retainers_count); 931 HeapObject* object, int children_count, int retainers_count);
930 HeapEntry* AddEntry(HeapObject* object, 932 HeapEntry* AddEntry(HeapObject* object,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
977 int field_offset = -1); 979 int field_offset = -1);
978 void SetPropertyShortcutReference(HeapObject* parent_obj, 980 void SetPropertyShortcutReference(HeapObject* parent_obj,
979 HeapEntry* parent, 981 HeapEntry* parent,
980 String* reference_name, 982 String* reference_name,
981 Object* child); 983 Object* child);
982 void SetRootShortcutReference(Object* child); 984 void SetRootShortcutReference(Object* child);
983 void SetRootGcRootsReference(); 985 void SetRootGcRootsReference();
984 void SetGcRootsReference(VisitorSynchronization::SyncTag tag); 986 void SetGcRootsReference(VisitorSynchronization::SyncTag tag);
985 void SetGcSubrootReference( 987 void SetGcSubrootReference(
986 VisitorSynchronization::SyncTag tag, bool is_weak, Object* child); 988 VisitorSynchronization::SyncTag tag, bool is_weak, Object* child);
989 void SetObjectName(HeapObject* object);
987 void TagObject(Object* obj, const char* tag); 990 void TagObject(Object* obj, const char* tag);
988 991
989 HeapEntry* GetEntry(Object* obj); 992 HeapEntry* GetEntry(Object* obj);
990 993
991 static inline HeapObject* GetNthGcSubrootObject(int delta); 994 static inline HeapObject* GetNthGcSubrootObject(int delta);
992 static inline int GetGcSubrootOrder(HeapObject* subroot); 995 static inline int GetGcSubrootOrder(HeapObject* subroot);
993 996
994 Heap* heap_; 997 Heap* heap_;
995 HeapSnapshot* snapshot_; 998 HeapSnapshot* snapshot_;
996 HeapSnapshotsCollection* collection_; 999 HeapSnapshotsCollection* collection_;
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
1150 1153
1151 friend class HeapSnapshotJSONSerializerEnumerator; 1154 friend class HeapSnapshotJSONSerializerEnumerator;
1152 friend class HeapSnapshotJSONSerializerIterator; 1155 friend class HeapSnapshotJSONSerializerIterator;
1153 1156
1154 DISALLOW_COPY_AND_ASSIGN(HeapSnapshotJSONSerializer); 1157 DISALLOW_COPY_AND_ASSIGN(HeapSnapshotJSONSerializer);
1155 }; 1158 };
1156 1159
1157 } } // namespace v8::internal 1160 } } // namespace v8::internal
1158 1161
1159 #endif // V8_PROFILE_GENERATOR_H_ 1162 #endif // V8_PROFILE_GENERATOR_H_
OLDNEW
« no previous file with comments | « no previous file | src/profile-generator.cc » ('j') | src/profile-generator.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698