| Index: src/heap-snapshot-generator.cc | 
| diff --git a/src/heap-snapshot-generator.cc b/src/heap-snapshot-generator.cc | 
| index ec6e10befe3c7b7977190952a0c0a57947f07d4b..61f0fc2a8db68ec21691a7f5c7d7338102c0bd6d 100644 | 
| --- a/src/heap-snapshot-generator.cc | 
| +++ b/src/heap-snapshot-generator.cc | 
| @@ -73,7 +73,7 @@ HeapEntry::HeapEntry(HeapSnapshot* snapshot, | 
| Type type, | 
| const char* name, | 
| SnapshotObjectId id, | 
| -                     int self_size) | 
| +                     size_t self_size) | 
| : type_(type), | 
| children_count_(0), | 
| children_index_(-1), | 
| @@ -104,7 +104,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("%6d @%6u %*c %s%s: ", | 
| +  OS::Print("%6"V8PRIuPTR" @%6u %*c %s%s: ", | 
| self_size(), id(), indent, ' ', prefix, edge_name); | 
| if (type() != kString) { | 
| OS::Print("%s %.40s\n", TypeAsString(), name_); | 
| @@ -194,7 +194,7 @@ template <> struct SnapshotSizeConstants<4> { | 
|  | 
| template <> struct SnapshotSizeConstants<8> { | 
| static const int kExpectedHeapGraphEdgeSize = 24; | 
| -  static const int kExpectedHeapEntrySize = 32; | 
| +  static const int kExpectedHeapEntrySize = 40; | 
| }; | 
|  | 
| }  // namespace | 
| @@ -277,7 +277,7 @@ HeapEntry* HeapSnapshot::AddGcSubrootEntry(int tag) { | 
| HeapEntry* HeapSnapshot::AddEntry(HeapEntry::Type type, | 
| const char* name, | 
| SnapshotObjectId id, | 
| -                                  int size) { | 
| +                                  size_t size) { | 
| HeapEntry entry(this, type, name, id, size); | 
| entries_.Add(entry); | 
| return &entries_.last(); | 
| @@ -907,7 +907,7 @@ HeapEntry* V8HeapExplorer::AddEntry(HeapObject* object, | 
| HeapEntry* V8HeapExplorer::AddEntry(Address address, | 
| HeapEntry::Type type, | 
| const char* name, | 
| -                                    int size) { | 
| +                                    size_t size) { | 
| SnapshotObjectId object_id = heap_object_map_->FindOrAddEntry(address, size); | 
| return snapshot_->AddEntry(type, name, object_id, size); | 
| } | 
| @@ -1458,7 +1458,7 @@ void V8HeapExplorer::ExtractAllocationSiteReferences(int entry, | 
|  | 
| class JSArrayBufferDataEntryAllocator : public HeapEntriesAllocator { | 
| public: | 
| -  JSArrayBufferDataEntryAllocator(int size, V8HeapExplorer* explorer) | 
| +  JSArrayBufferDataEntryAllocator(size_t size, V8HeapExplorer* explorer) | 
| : size_(size) | 
| , explorer_(explorer) { | 
| } | 
| @@ -1468,7 +1468,7 @@ class JSArrayBufferDataEntryAllocator : public HeapEntriesAllocator { | 
| HeapEntry::kNative, "system / JSArrayBufferData", size_); | 
| } | 
| private: | 
| -  int size_; | 
| +  size_t size_; | 
| V8HeapExplorer* explorer_; | 
| }; | 
|  | 
| @@ -1484,8 +1484,7 @@ void V8HeapExplorer::ExtractJSArrayBufferReferences( | 
| if (!buffer->backing_store()) | 
| return; | 
| size_t data_size = NumberToSize(heap_->isolate(), buffer->byte_length()); | 
| -  CHECK(data_size <= static_cast<size_t>(kMaxInt)); | 
| -  JSArrayBufferDataEntryAllocator allocator(static_cast<int>(data_size), this); | 
| +  JSArrayBufferDataEntryAllocator allocator(data_size, this); | 
| HeapEntry* data_entry = | 
| filler_->FindOrAddEntry(buffer->backing_store(), &allocator); | 
| filler_->SetNamedReference(HeapGraphEdge::kInternal, | 
| @@ -2702,9 +2701,26 @@ int HeapSnapshotJSONSerializer::GetStringId(const char* s) { | 
| } | 
|  | 
|  | 
| -static int utoa(unsigned value, const Vector<char>& buffer, int buffer_pos) { | 
| +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 | 
| int number_of_digits = 0; | 
| -  unsigned t = value; | 
| +  T t = value; | 
| do { | 
| ++number_of_digits; | 
| } while (t /= 10); | 
| @@ -2712,7 +2728,7 @@ static int utoa(unsigned value, const Vector<char>& buffer, int buffer_pos) { | 
| buffer_pos += number_of_digits; | 
| int result = buffer_pos; | 
| do { | 
| -    int last_digit = value % 10; | 
| +    int last_digit = static_cast<int>(value % 10); | 
| buffer[--buffer_pos] = '0' + last_digit; | 
| value /= 10; | 
| } while (value); | 
| @@ -2720,6 +2736,14 @@ static int utoa(unsigned 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 | 
| @@ -2756,9 +2780,10 @@ void HeapSnapshotJSONSerializer::SerializeEdges() { | 
|  | 
|  | 
| void HeapSnapshotJSONSerializer::SerializeNode(HeapEntry* entry) { | 
| -  // The buffer needs space for 5 unsigned ints, 5 commas, \n and \0 | 
| +  // The buffer needs space for 4 unsigned ints, 1 size_t, 5 commas, \n and \0 | 
| static const int kBufferSize = | 
| -      5 * MaxDecimalDigitsIn<sizeof(unsigned)>::kUnsigned  // NOLINT | 
| +      4 * MaxDecimalDigitsIn<sizeof(unsigned)>::kUnsigned  // NOLINT | 
| +      + MaxDecimalDigitsIn<sizeof(size_t)>::kUnsigned  // NOLINT | 
| + 5 + 1 + 1; | 
| EmbeddedVector<char, kBufferSize> buffer; | 
| int buffer_pos = 0; | 
|  |