summaryrefslogtreecommitdiff
path: root/deps/v8/src/heap-snapshot-generator.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/heap-snapshot-generator.cc')
-rw-r--r--deps/v8/src/heap-snapshot-generator.cc105
1 files changed, 20 insertions, 85 deletions
diff --git a/deps/v8/src/heap-snapshot-generator.cc b/deps/v8/src/heap-snapshot-generator.cc
index b67aa0f376..ccfbfb8d03 100644
--- a/deps/v8/src/heap-snapshot-generator.cc
+++ b/deps/v8/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;