Revert "HeapProfiler: for the test purposes we would like to trace object movements."

This reverts r17263 because of compile failures accross all builds.

TBR=loislo@chromium.org

Review URL: https://codereview.chromium.org/28773002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
mstarzinger@chromium.org 2013-10-18 09:50:06 +00:00
parent c748e7bbc9
commit 6f77ab124c
3 changed files with 6 additions and 136 deletions

View File

@ -273,15 +273,14 @@ static FixedArrayBase* LeftTrimFixedArray(Heap* heap,
MemoryChunk::IncrementLiveBytesFromMutator(elms->address(), -size_delta);
}
FixedArrayBase* new_elms = FixedArrayBase::cast(HeapObject::FromAddress(
elms->address() + size_delta));
HeapProfiler* profiler = heap->isolate()->heap_profiler();
if (profiler->is_profiling()) {
profiler->ObjectMoveEvent(elms->address(),
new_elms->address(),
new_elms->Size());
elms->address() + size_delta,
elms->Size());
}
return new_elms;
return FixedArrayBase::cast(HeapObject::FromAddress(
elms->address() + to_trim * entry_size));
}

View File

@ -541,12 +541,6 @@ DEFINE_int(sweeper_threads, 0,
DEFINE_bool(verify_heap, false, "verify heap pointers before and after GC")
#endif
// heap-snapshot-generator.cc
DEFINE_bool(heap_profiler_trace_objects, false,
"Dump heap object allocations/movements/size_updates")
// v8.cc
DEFINE_bool(use_idle_notification, true,
"Use idle notification to reduce memory footprint.")

View File

@ -431,13 +431,6 @@ void HeapObjectsMap::MoveObject(Address from, Address to, int object_size) {
// Size of an object can change during its life, so to keep information
// about the object in entries_ consistent, we have to adjust size when the
// object is migrated.
if (FLAG_heap_profiler_trace_objects) {
PrintF("Move object from %p to %p old size %6d new size %6d\n",
from,
to,
entries_.at(from_entry_info_index).size,
object_size);
}
entries_.at(from_entry_info_index).size = object_size;
to_entry->value = from_value;
}
@ -445,12 +438,6 @@ void HeapObjectsMap::MoveObject(Address from, Address to, int object_size) {
void HeapObjectsMap::NewObject(Address addr, int size) {
if (FLAG_heap_profiler_trace_objects) {
PrintF("New object : %p %6d. Next address is %p\n",
addr,
size,
addr + size);
}
ASSERT(addr != NULL);
FindOrAddEntry(addr, size, false);
}
@ -483,12 +470,6 @@ SnapshotObjectId HeapObjectsMap::FindOrAddEntry(Address addr,
static_cast<int>(reinterpret_cast<intptr_t>(entry->value));
EntryInfo& entry_info = entries_.at(entry_index);
entry_info.accessed = accessed;
if (FLAG_heap_profiler_trace_objects) {
PrintF("Update object size : %p with old size %d and new size %d\n",
addr,
entry_info.size,
size);
}
entry_info.size = size;
return entry_info.id;
}
@ -507,10 +488,6 @@ void HeapObjectsMap::StopHeapObjectsTracking() {
void HeapObjectsMap::UpdateHeapObjectsMap() {
if (FLAG_heap_profiler_trace_objects) {
PrintF("Begin HeapObjectsMap::UpdateHeapObjectsMap. map has %d entries.\n",
entries_map_.occupancy());
}
heap_->CollectAllGarbage(Heap::kMakeHeapIterableMask,
"HeapSnapshotsCollection::UpdateHeapObjectsMap");
HeapIterator iterator(heap_);
@ -518,70 +495,12 @@ void HeapObjectsMap::UpdateHeapObjectsMap() {
obj != NULL;
obj = iterator.next()) {
FindOrAddEntry(obj->address(), obj->Size());
if (FLAG_heap_profiler_trace_objects) {
PrintF("Update object : %p %6d. Next address is %p\n",
obj->address(),
obj->Size(),
obj->address() + obj->Size());
}
}
RemoveDeadEntries();
if (FLAG_heap_profiler_trace_objects) {
PrintF("End HeapObjectsMap::UpdateHeapObjectsMap. map has %d entries.\n",
entries_map_.occupancy());
}
}
namespace {
struct HeapObjectInfo {
HeapObjectInfo(HeapObject* obj, size_t expected_size)
: obj(obj),
expected_size(expected_size) {
}
HeapObject* obj;
size_t expected_size;
bool IsValid() const { return expected_size == obj->Size(); }
void Print() const {
if (expected_size == 0) {
PrintF("Untracked object : %p %6d. Next address is %p\n",
obj->address(),
obj->Size(),
obj->address() + obj->Size());
} else if (obj->Size() != expected_size) {
PrintF("Wrong size %6d: %p %6d. Next address is %p\n",
expected_size,
obj->address(),
obj->Size(),
obj->address() + obj->Size());
} else {
PrintF("Good object : %p %6d. Next address is %p\n",
obj->address(),
expected_size,
obj->address() + obj->Size());
}
}
};
static int comparator(const HeapObjectInfo* a, const HeapObjectInfo* b) {
if (a->obj < b->obj) return -1;
if (a->obj > b->obj) return 1;
return 0;
}
} // namespace
int HeapObjectsMap::FindUntrackedObjects() {
List<HeapObjectInfo> heap_objects(1000);
HeapIterator iterator(heap_);
int untracked = 0;
for (HeapObject* obj = iterator.next();
@ -590,56 +509,14 @@ int HeapObjectsMap::FindUntrackedObjects() {
HashMap::Entry* entry = entries_map_.Lookup(
obj->address(), ComputePointerHash(obj->address()), false);
if (entry == NULL) {
++untracked;
if (FLAG_heap_profiler_trace_objects) {
heap_objects.Add(HeapObjectInfo(obj, 0));
}
untracked++;
} else {
int entry_index = static_cast<int>(
reinterpret_cast<intptr_t>(entry->value));
EntryInfo& entry_info = entries_.at(entry_index);
if (FLAG_heap_profiler_trace_objects) {
heap_objects.Add(HeapObjectInfo(obj,
static_cast<int>(entry_info.size)));
if (obj->Size() != static_cast<int>(entry_info.size))
++untracked;
} else {
CHECK_EQ(obj->Size(), static_cast<int>(entry_info.size));
}
CHECK_EQ(obj->Size(), static_cast<int>(entry_info.size));
}
}
if (FLAG_heap_profiler_trace_objects) {
PrintF("\nBegin HeapObjectsMap::FindUntrackedObjects. %d entries in map.\n",
entries_map_.occupancy());
heap_objects.Sort(comparator);
int last_printed_object = -1;
bool print_next_object = false;
for (int i = 0; i < heap_objects.length(); ++i) {
const HeapObjectInfo& object_info = heap_objects[i];
if (!object_info.IsValid()) {
++untracked;
if (last_printed_object != i - 1) {
if (i > 0) {
PrintF("%d objects were skipped\n", i - 1 - last_printed_object);
heap_objects[i - 1].Print();
}
}
object_info.Print();
last_printed_object = i;
print_next_object = true;
} else if (print_next_object) {
object_info.Print();
print_next_object = false;
last_printed_object = i;
}
}
if (last_printed_object < heap_objects.length() - 1) {
PrintF("Last %d objects were skipped\n",
heap_objects.length() - 1 - last_printed_object);
}
PrintF("End HeapObjectsMap::FindUntrackedObjects. %d entries in map.\n\n",
entries_map_.occupancy());
}
return untracked;
}