| OLD | NEW |
| 1 // Copyright 2009-2010 the V8 project authors. All rights reserved. | 1 // Copyright 2009-2010 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/heap-profiler.h" | 5 #include "src/heap-profiler.h" |
| 6 | 6 |
| 7 #include "src/allocation-tracker.h" | 7 #include "src/allocation-tracker.h" |
| 8 #include "src/api.h" | 8 #include "src/api.h" |
| 9 #include "src/heap-snapshot-generator-inl.h" | 9 #include "src/heap-snapshot-generator-inl.h" |
| 10 | 10 |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 | 128 |
| 129 | 129 |
| 130 SnapshotObjectId HeapProfiler::GetSnapshotObjectId(Handle<Object> obj) { | 130 SnapshotObjectId HeapProfiler::GetSnapshotObjectId(Handle<Object> obj) { |
| 131 if (!obj->IsHeapObject()) | 131 if (!obj->IsHeapObject()) |
| 132 return v8::HeapProfiler::kUnknownObjectId; | 132 return v8::HeapProfiler::kUnknownObjectId; |
| 133 return ids_->FindEntry(HeapObject::cast(*obj)->address()); | 133 return ids_->FindEntry(HeapObject::cast(*obj)->address()); |
| 134 } | 134 } |
| 135 | 135 |
| 136 | 136 |
| 137 void HeapProfiler::ObjectMoveEvent(Address from, Address to, int size) { | 137 void HeapProfiler::ObjectMoveEvent(Address from, Address to, int size) { |
| 138 base::LockGuard<base::Mutex> guard(&profiler_mutex_); |
| 138 bool known_object = ids_->MoveObject(from, to, size); | 139 bool known_object = ids_->MoveObject(from, to, size); |
| 139 if (!known_object && !allocation_tracker_.is_empty()) { | 140 if (!known_object && !allocation_tracker_.is_empty()) { |
| 140 allocation_tracker_->address_to_trace()->MoveObject(from, to, size); | 141 allocation_tracker_->address_to_trace()->MoveObject(from, to, size); |
| 141 } | 142 } |
| 142 } | 143 } |
| 143 | 144 |
| 144 | 145 |
| 145 void HeapProfiler::AllocationEvent(Address addr, int size) { | 146 void HeapProfiler::AllocationEvent(Address addr, int size) { |
| 146 DisallowHeapAllocation no_allocation; | 147 DisallowHeapAllocation no_allocation; |
| 147 if (!allocation_tracker_.is_empty()) { | 148 if (!allocation_tracker_.is_empty()) { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 ids_.Reset(new HeapObjectsMap(heap())); | 184 ids_.Reset(new HeapObjectsMap(heap())); |
| 184 if (!is_tracking_allocations()) is_tracking_object_moves_ = false; | 185 if (!is_tracking_allocations()) is_tracking_object_moves_ = false; |
| 185 } | 186 } |
| 186 | 187 |
| 187 | 188 |
| 188 Heap* HeapProfiler::heap() const { return ids_->heap(); } | 189 Heap* HeapProfiler::heap() const { return ids_->heap(); } |
| 189 | 190 |
| 190 | 191 |
| 191 } // namespace internal | 192 } // namespace internal |
| 192 } // namespace v8 | 193 } // namespace v8 |
| OLD | NEW |