From: yurys@chromium.org Date: Fri, 29 Nov 2013 09:47:32 +0000 (+0000) Subject: Move heap profiler state flags to HeapProfiler X-Git-Tag: upstream/4.7.83~11496 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c7053c8a37ce29fcd0232e140936af19e04c1a03;p=platform%2Fupstream%2Fv8.git Move heap profiler state flags to HeapProfiler - moved is_tracking_objects_ flag to HeapProfiler and renamed it to is_tracking_objects_moves_ - Removed redundant call to UpdateHeapObjectsMap BUG=None LOG=N R=loislo@chromium.org, mstarzinger@chromium.org Review URL: https://codereview.chromium.org/94993004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18149 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/builtins.cc b/src/builtins.cc index fbc426a..62e4372 100644 --- a/src/builtins.cc +++ b/src/builtins.cc @@ -276,15 +276,15 @@ static FixedArrayBase* LeftTrimFixedArray(Heap* heap, FixedArrayBase* new_elms = FixedArrayBase::cast(HeapObject::FromAddress( elms->address() + size_delta)); HeapProfiler* profiler = heap->isolate()->heap_profiler(); - if (profiler->is_profiling()) { + if (profiler->is_tracking_object_moves()) { profiler->ObjectMoveEvent(elms->address(), new_elms->address(), new_elms->Size()); - if (profiler->is_tracking_allocations()) { - // Report filler object as a new allocation. - // Otherwise it will become an untracked object. - profiler->NewObjectEvent(elms->address(), elms->Size()); - } + } + if (profiler->is_tracking_allocations()) { + // Report filler object as a new allocation. + // Otherwise it will become an untracked object. + profiler->NewObjectEvent(elms->address(), elms->Size()); } return new_elms; } diff --git a/src/heap-profiler.cc b/src/heap-profiler.cc index a4ec5a9..b7855a9 100644 --- a/src/heap-profiler.cc +++ b/src/heap-profiler.cc @@ -36,7 +36,8 @@ namespace internal { HeapProfiler::HeapProfiler(Heap* heap) : snapshots_(new HeapSnapshotsCollection(heap)), next_snapshot_uid_(1), - is_tracking_allocations_(false) { + is_tracking_allocations_(false), + is_tracking_object_moves_(false) { } @@ -84,6 +85,7 @@ HeapSnapshot* HeapProfiler::TakeSnapshot( } } snapshots_->SnapshotGenerationFinished(result); + is_tracking_object_moves_ = true; return result; } @@ -98,6 +100,7 @@ HeapSnapshot* HeapProfiler::TakeSnapshot( void HeapProfiler::StartHeapObjectsTracking() { snapshots_->StartHeapObjectsTracking(); + is_tracking_object_moves_ = true; } @@ -159,7 +162,6 @@ void HeapProfiler::StartHeapAllocationsRecording() { StartHeapObjectsTracking(); heap()->DisableInlineAllocation(); is_tracking_allocations_ = true; - snapshots_->UpdateHeapObjectsMap(); } diff --git a/src/heap-profiler.h b/src/heap-profiler.h index f2e8100..4af1e49 100644 --- a/src/heap-profiler.h +++ b/src/heap-profiler.h @@ -73,15 +73,10 @@ class HeapProfiler { v8::RetainedObjectInfo* ExecuteWrapperClassCallback(uint16_t class_id, Object** wrapper); - INLINE(bool is_profiling()) { - return snapshots_->is_tracking_objects(); - } - void SetRetainedObjectInfo(UniqueId id, RetainedObjectInfo* info); - bool is_tracking_allocations() { - return is_tracking_allocations_; - } + bool is_tracking_object_moves() const { return is_tracking_object_moves_; } + bool is_tracking_allocations() const { return is_tracking_allocations_; } void StartHeapAllocationsRecording(); void StopHeapAllocationsRecording(); @@ -97,6 +92,7 @@ class HeapProfiler { unsigned next_snapshot_uid_; List wrapper_callbacks_; bool is_tracking_allocations_; + bool is_tracking_object_moves_; }; } } // namespace v8::internal diff --git a/src/heap-snapshot-generator.cc b/src/heap-snapshot-generator.cc index 7e74d86..79a1516 100644 --- a/src/heap-snapshot-generator.cc +++ b/src/heap-snapshot-generator.cc @@ -747,8 +747,7 @@ size_t HeapObjectsMap::GetUsedMemorySize() const { HeapSnapshotsCollection::HeapSnapshotsCollection(Heap* heap) - : is_tracking_objects_(false), - names_(heap), + : names_(heap), ids_(heap), allocation_tracker_(NULL) { } @@ -770,7 +769,6 @@ void HeapSnapshotsCollection::StartHeapObjectsTracking() { if (allocation_tracker_ == NULL) { allocation_tracker_ = new AllocationTracker(&ids_, names()); } - is_tracking_objects_ = true; } @@ -785,7 +783,6 @@ void HeapSnapshotsCollection::StopHeapObjectsTracking() { HeapSnapshot* HeapSnapshotsCollection::NewSnapshot(const char* name, unsigned uid) { - is_tracking_objects_ = true; // Start watching for heap objects moves. return new HeapSnapshot(this, name, uid); } diff --git a/src/heap-snapshot-generator.h b/src/heap-snapshot-generator.h index c69d5e5..64a217c 100644 --- a/src/heap-snapshot-generator.h +++ b/src/heap-snapshot-generator.h @@ -294,7 +294,6 @@ class HeapSnapshotsCollection { Heap* heap() const { return ids_.heap(); } - bool is_tracking_objects() { return is_tracking_objects_; } SnapshotObjectId PushHeapObjectsStats(OutputStream* stream) { return ids_.PushHeapObjectsStats(stream); } @@ -330,10 +329,7 @@ class HeapSnapshotsCollection { int FindUntrackedObjects() { return ids_.FindUntrackedObjects(); } - void UpdateHeapObjectsMap() { ids_.UpdateHeapObjectsMap(); } - private: - bool is_tracking_objects_; // Whether tracking object moves is needed. List snapshots_; StringsStorage names_; // Mapping from HeapObject addresses to objects' uids. diff --git a/src/heap.cc b/src/heap.cc index 86efe4b..0f2f9e0 100644 --- a/src/heap.cc +++ b/src/heap.cc @@ -2196,7 +2196,7 @@ class ScavengingVisitor : public StaticVisitorBase { RecordCopiedObject(heap, target); Isolate* isolate = heap->isolate(); HeapProfiler* heap_profiler = isolate->heap_profiler(); - if (heap_profiler->is_profiling()) { + if (heap_profiler->is_tracking_object_moves()) { heap_profiler->ObjectMoveEvent(source->address(), target->address(), size); } @@ -2447,7 +2447,7 @@ void Heap::SelectScavengingVisitorsTable() { isolate()->logger()->is_logging() || isolate()->cpu_profiler()->is_profiling() || (isolate()->heap_profiler() != NULL && - isolate()->heap_profiler()->is_profiling()); + isolate()->heap_profiler()->is_tracking_object_moves()); if (!incremental_marking()->IsMarking()) { if (!logging_and_profiling) { diff --git a/src/mark-compact.cc b/src/mark-compact.cc index b60768b..0e6b980 100644 --- a/src/mark-compact.cc +++ b/src/mark-compact.cc @@ -2768,7 +2768,7 @@ void MarkCompactCollector::MigrateObject(Address dst, int size, AllocationSpace dest) { HeapProfiler* heap_profiler = heap()->isolate()->heap_profiler(); - if (heap_profiler->is_profiling()) { + if (heap_profiler->is_tracking_object_moves()) { heap_profiler->ObjectMoveEvent(src, dst, size); } ASSERT(heap()->AllowedToBeMigrated(HeapObject::FromAddress(src), dest));