| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 439 to, | 439 to, |
| 440 entries_.at(from_entry_info_index).size, | 440 entries_.at(from_entry_info_index).size, |
| 441 object_size); | 441 object_size); |
| 442 } | 442 } |
| 443 entries_.at(from_entry_info_index).size = object_size; | 443 entries_.at(from_entry_info_index).size = object_size; |
| 444 to_entry->value = from_value; | 444 to_entry->value = from_value; |
| 445 } | 445 } |
| 446 } | 446 } |
| 447 | 447 |
| 448 | 448 |
| 449 void HeapObjectsMap::NewObject(Address addr, int size) { | |
| 450 if (FLAG_heap_profiler_trace_objects) { | |
| 451 PrintF("New object : %p %6d. Next address is %p\n", | |
| 452 addr, | |
| 453 size, | |
| 454 addr + size); | |
| 455 } | |
| 456 ASSERT(addr != NULL); | |
| 457 FindOrAddEntry(addr, size, false); | |
| 458 } | |
| 459 | |
| 460 | |
| 461 void HeapObjectsMap::UpdateObjectSize(Address addr, int size) { | 449 void HeapObjectsMap::UpdateObjectSize(Address addr, int size) { |
| 462 FindOrAddEntry(addr, size, false); | 450 FindOrAddEntry(addr, size, false); |
| 463 } | 451 } |
| 464 | 452 |
| 465 | 453 |
| 466 SnapshotObjectId HeapObjectsMap::FindEntry(Address addr) { | 454 SnapshotObjectId HeapObjectsMap::FindEntry(Address addr) { |
| 467 HashMap::Entry* entry = entries_map_.Lookup(addr, ComputePointerHash(addr), | 455 HashMap::Entry* entry = entries_map_.Lookup(addr, ComputePointerHash(addr), |
| 468 false); | 456 false); |
| 469 if (entry == NULL) return 0; | 457 if (entry == NULL) return 0; |
| 470 int entry_index = static_cast<int>(reinterpret_cast<intptr_t>(entry->value)); | 458 int entry_index = static_cast<int>(reinterpret_cast<intptr_t>(entry->value)); |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 816 if (ids_.FindEntry(obj->address()) == id) { | 804 if (ids_.FindEntry(obj->address()) == id) { |
| 817 ASSERT(object == NULL); | 805 ASSERT(object == NULL); |
| 818 object = obj; | 806 object = obj; |
| 819 // Can't break -- kFilterUnreachable requires full heap traversal. | 807 // Can't break -- kFilterUnreachable requires full heap traversal. |
| 820 } | 808 } |
| 821 } | 809 } |
| 822 return object != NULL ? Handle<HeapObject>(object) : Handle<HeapObject>(); | 810 return object != NULL ? Handle<HeapObject>(object) : Handle<HeapObject>(); |
| 823 } | 811 } |
| 824 | 812 |
| 825 | 813 |
| 826 void HeapSnapshotsCollection::NewObjectEvent(Address addr, int size) { | 814 void HeapSnapshotsCollection::AllocationEvent(Address addr, int size) { |
| 827 DisallowHeapAllocation no_allocation; | 815 DisallowHeapAllocation no_allocation; |
| 828 ids_.NewObject(addr, size); | |
| 829 if (allocation_tracker_ != NULL) { | 816 if (allocation_tracker_ != NULL) { |
| 830 allocation_tracker_->NewObjectEvent(addr, size); | 817 allocation_tracker_->AllocationEvent(addr, size); |
| 831 } | 818 } |
| 832 } | 819 } |
| 833 | 820 |
| 834 | 821 |
| 835 size_t HeapSnapshotsCollection::GetUsedMemorySize() const { | 822 size_t HeapSnapshotsCollection::GetUsedMemorySize() const { |
| 836 size_t size = sizeof(*this); | 823 size_t size = sizeof(*this); |
| 837 size += names_.GetUsedMemorySize(); | 824 size += names_.GetUsedMemorySize(); |
| 838 size += ids_.GetUsedMemorySize(); | 825 size += ids_.GetUsedMemorySize(); |
| 839 size += GetMemoryUsedByList(snapshots_); | 826 size += GetMemoryUsedByList(snapshots_); |
| 840 for (int i = 0; i < snapshots_.length(); ++i) { | 827 for (int i = 0; i < snapshots_.length(); ++i) { |
| (...skipping 2234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3075 writer_->AddString("\"<dummy>\""); | 3062 writer_->AddString("\"<dummy>\""); |
| 3076 for (int i = 1; i < sorted_strings.length(); ++i) { | 3063 for (int i = 1; i < sorted_strings.length(); ++i) { |
| 3077 writer_->AddCharacter(','); | 3064 writer_->AddCharacter(','); |
| 3078 SerializeString(sorted_strings[i]); | 3065 SerializeString(sorted_strings[i]); |
| 3079 if (writer_->aborted()) return; | 3066 if (writer_->aborted()) return; |
| 3080 } | 3067 } |
| 3081 } | 3068 } |
| 3082 | 3069 |
| 3083 | 3070 |
| 3084 } } // namespace v8::internal | 3071 } } // namespace v8::internal |
| OLD | NEW |