| Index: src/heap-snapshot-generator.cc
|
| diff --git a/src/heap-snapshot-generator.cc b/src/heap-snapshot-generator.cc
|
| index b67aa0f3764ad1c190243c98ec4921c2d1c6454d..ccfbfb8d03af5757c67dfc27f3dc2fc073357931 100644
|
| --- a/src/heap-snapshot-generator.cc
|
| +++ b/src/heap-snapshot-generator.cc
|
| @@ -34,7 +34,6 @@
|
| #include "heap-profiler.h"
|
| #include "debug.h"
|
| #include "types.h"
|
| -#include "v8conversions.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
| @@ -73,7 +72,7 @@ HeapEntry::HeapEntry(HeapSnapshot* snapshot,
|
| Type type,
|
| const char* name,
|
| SnapshotObjectId id,
|
| - size_t self_size)
|
| + int self_size)
|
| : type_(type),
|
| children_count_(0),
|
| children_index_(-1),
|
| @@ -104,7 +103,7 @@ void HeapEntry::SetIndexedReference(HeapGraphEdge::Type type,
|
| void HeapEntry::Print(
|
| const char* prefix, const char* edge_name, int max_depth, int indent) {
|
| STATIC_CHECK(sizeof(unsigned) == sizeof(id()));
|
| - OS::Print("%6" V8PRIuPTR " @%6u %*c %s%s: ",
|
| + OS::Print("%6d @%6u %*c %s%s: ",
|
| self_size(), id(), indent, ' ', prefix, edge_name);
|
| if (type() != kString) {
|
| OS::Print("%s %.40s\n", TypeAsString(), name_);
|
| @@ -194,7 +193,7 @@ template <> struct SnapshotSizeConstants<4> {
|
|
|
| template <> struct SnapshotSizeConstants<8> {
|
| static const int kExpectedHeapGraphEdgeSize = 24;
|
| - static const int kExpectedHeapEntrySize = 40;
|
| + static const int kExpectedHeapEntrySize = 32;
|
| };
|
|
|
| } // namespace
|
| @@ -277,7 +276,7 @@ HeapEntry* HeapSnapshot::AddGcSubrootEntry(int tag) {
|
| HeapEntry* HeapSnapshot::AddEntry(HeapEntry::Type type,
|
| const char* name,
|
| SnapshotObjectId id,
|
| - size_t size) {
|
| + int size) {
|
| HeapEntry entry(this, type, name, id, size);
|
| entries_.Add(entry);
|
| return &entries_.last();
|
| @@ -900,17 +899,10 @@ HeapEntry* V8HeapExplorer::AddEntry(HeapObject* object) {
|
| HeapEntry* V8HeapExplorer::AddEntry(HeapObject* object,
|
| HeapEntry::Type type,
|
| const char* name) {
|
| - return AddEntry(object->address(), type, name, object->Size());
|
| -}
|
| -
|
| -
|
| -HeapEntry* V8HeapExplorer::AddEntry(Address address,
|
| - HeapEntry::Type type,
|
| - const char* name,
|
| - size_t size) {
|
| - SnapshotObjectId object_id = heap_object_map_->FindOrAddEntry(
|
| - address, static_cast<unsigned int>(size));
|
| - return snapshot_->AddEntry(type, name, object_id, size);
|
| + int object_size = object->Size();
|
| + SnapshotObjectId object_id =
|
| + heap_object_map_->FindOrAddEntry(object->address(), object_size);
|
| + return snapshot_->AddEntry(type, name, object_id, object_size);
|
| }
|
|
|
|
|
| @@ -1037,8 +1029,6 @@ void V8HeapExplorer::ExtractReferences(HeapObject* obj) {
|
|
|
| if (obj->IsJSGlobalProxy()) {
|
| ExtractJSGlobalProxyReferences(entry, JSGlobalProxy::cast(obj));
|
| - } else if (obj->IsJSArrayBuffer()) {
|
| - ExtractJSArrayBufferReferences(entry, JSArrayBuffer::cast(obj));
|
| } else if (obj->IsJSObject()) {
|
| ExtractJSObjectReferences(entry, JSObject::cast(obj));
|
| } else if (obj->IsString()) {
|
| @@ -1157,6 +1147,13 @@ void V8HeapExplorer::ExtractJSObjectReferences(
|
| JSArrayBufferView::kBufferOffset);
|
| SetWeakReference(view, entry, "weak_next", view->weak_next(),
|
| JSArrayBufferView::kWeakNextOffset);
|
| + } else if (obj->IsJSArrayBuffer()) {
|
| + JSArrayBuffer* buffer = JSArrayBuffer::cast(obj);
|
| + SetWeakReference(buffer, entry, "weak_next", buffer->weak_next(),
|
| + JSArrayBuffer::kWeakNextOffset);
|
| + SetWeakReference(buffer, entry,
|
| + "weak_first_view", buffer->weak_first_view(),
|
| + JSArrayBuffer::kWeakFirstViewOffset);
|
| }
|
| TagObject(js_obj->properties(), "(object properties)");
|
| SetInternalReference(obj, entry,
|
| @@ -1457,42 +1454,6 @@ void V8HeapExplorer::ExtractAllocationSiteReferences(int entry,
|
| }
|
|
|
|
|
| -class JSArrayBufferDataEntryAllocator : public HeapEntriesAllocator {
|
| - public:
|
| - JSArrayBufferDataEntryAllocator(size_t size, V8HeapExplorer* explorer)
|
| - : size_(size)
|
| - , explorer_(explorer) {
|
| - }
|
| - virtual HeapEntry* AllocateEntry(HeapThing ptr) {
|
| - return explorer_->AddEntry(
|
| - static_cast<Address>(ptr),
|
| - HeapEntry::kNative, "system / JSArrayBufferData", size_);
|
| - }
|
| - private:
|
| - size_t size_;
|
| - V8HeapExplorer* explorer_;
|
| -};
|
| -
|
| -
|
| -void V8HeapExplorer::ExtractJSArrayBufferReferences(
|
| - int entry, JSArrayBuffer* buffer) {
|
| - SetWeakReference(buffer, entry, "weak_next", buffer->weak_next(),
|
| - JSArrayBuffer::kWeakNextOffset);
|
| - SetWeakReference(buffer, entry,
|
| - "weak_first_view", buffer->weak_first_view(),
|
| - JSArrayBuffer::kWeakFirstViewOffset);
|
| - // Setup a reference to a native memory backing_store object.
|
| - if (!buffer->backing_store())
|
| - return;
|
| - size_t data_size = NumberToSize(heap_->isolate(), buffer->byte_length());
|
| - JSArrayBufferDataEntryAllocator allocator(data_size, this);
|
| - HeapEntry* data_entry =
|
| - filler_->FindOrAddEntry(buffer->backing_store(), &allocator);
|
| - filler_->SetNamedReference(HeapGraphEdge::kInternal,
|
| - entry, "backing_store", data_entry);
|
| -}
|
| -
|
| -
|
| void V8HeapExplorer::ExtractClosureReferences(JSObject* js_obj, int entry) {
|
| if (!js_obj->IsJSFunction()) return;
|
|
|
| @@ -2702,26 +2663,9 @@ int HeapSnapshotJSONSerializer::GetStringId(const char* s) {
|
| }
|
|
|
|
|
| -namespace {
|
| -
|
| -template<size_t size> struct ToUnsigned;
|
| -
|
| -template<> struct ToUnsigned<4> {
|
| - typedef uint32_t Type;
|
| -};
|
| -
|
| -template<> struct ToUnsigned<8> {
|
| - typedef uint64_t Type;
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -
|
| -template<typename T>
|
| -static int utoa_impl(T value, const Vector<char>& buffer, int buffer_pos) {
|
| - STATIC_CHECK(static_cast<T>(-1) > 0); // Check that T is unsigned
|
| +static int utoa(unsigned value, const Vector<char>& buffer, int buffer_pos) {
|
| int number_of_digits = 0;
|
| - T t = value;
|
| + unsigned t = value;
|
| do {
|
| ++number_of_digits;
|
| } while (t /= 10);
|
| @@ -2729,7 +2673,7 @@ static int utoa_impl(T value, const Vector<char>& buffer, int buffer_pos) {
|
| buffer_pos += number_of_digits;
|
| int result = buffer_pos;
|
| do {
|
| - int last_digit = static_cast<int>(value % 10);
|
| + int last_digit = value % 10;
|
| buffer[--buffer_pos] = '0' + last_digit;
|
| value /= 10;
|
| } while (value);
|
| @@ -2737,14 +2681,6 @@ static int utoa_impl(T value, const Vector<char>& buffer, int buffer_pos) {
|
| }
|
|
|
|
|
| -template<typename T>
|
| -static int utoa(T value, const Vector<char>& buffer, int buffer_pos) {
|
| - typename ToUnsigned<sizeof(value)>::Type unsigned_value = value;
|
| - STATIC_CHECK(sizeof(value) == sizeof(unsigned_value));
|
| - return utoa_impl(unsigned_value, buffer, buffer_pos);
|
| -}
|
| -
|
| -
|
| void HeapSnapshotJSONSerializer::SerializeEdge(HeapGraphEdge* edge,
|
| bool first_edge) {
|
| // The buffer needs space for 3 unsigned ints, 3 commas, \n and \0
|
| @@ -2781,10 +2717,9 @@ void HeapSnapshotJSONSerializer::SerializeEdges() {
|
|
|
|
|
| void HeapSnapshotJSONSerializer::SerializeNode(HeapEntry* entry) {
|
| - // The buffer needs space for 4 unsigned ints, 1 size_t, 5 commas, \n and \0
|
| + // The buffer needs space for 5 unsigned ints, 5 commas, \n and \0
|
| static const int kBufferSize =
|
| - 4 * MaxDecimalDigitsIn<sizeof(unsigned)>::kUnsigned // NOLINT
|
| - + MaxDecimalDigitsIn<sizeof(size_t)>::kUnsigned // NOLINT
|
| + 5 * MaxDecimalDigitsIn<sizeof(unsigned)>::kUnsigned // NOLINT
|
| + 5 + 1 + 1;
|
| EmbeddedVector<char, kBufferSize> buffer;
|
| int buffer_pos = 0;
|
|
|