diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2011-12-05 16:29:01 -0800 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2011-12-05 16:29:01 -0800 |
commit | 21d081fd7f83aa168ea0bef0870c7f1fed410a63 (patch) | |
tree | 23a04eef49364b1cbee204a87fd0904be2430c2e /deps/v8/src/objects-printer.cc | |
parent | e90623edc2befb06602ff8c3e01809ba0a21d593 (diff) | |
download | node-new-21d081fd7f83aa168ea0bef0870c7f1fed410a63.tar.gz |
Upgrade V8 to 3.7.12
Diffstat (limited to 'deps/v8/src/objects-printer.cc')
-rw-r--r-- | deps/v8/src/objects-printer.cc | 85 |
1 files changed, 75 insertions, 10 deletions
diff --git a/deps/v8/src/objects-printer.cc b/deps/v8/src/objects-printer.cc index 0398572f90..4b5d049f51 100644 --- a/deps/v8/src/objects-printer.cc +++ b/deps/v8/src/objects-printer.cc @@ -82,12 +82,18 @@ void HeapObject::HeapObjectPrint(FILE* out) { case HEAP_NUMBER_TYPE: HeapNumber::cast(this)->HeapNumberPrint(out); break; + case FIXED_DOUBLE_ARRAY_TYPE: + FixedDoubleArray::cast(this)->FixedDoubleArrayPrint(out); + break; case FIXED_ARRAY_TYPE: FixedArray::cast(this)->FixedArrayPrint(out); break; case BYTE_ARRAY_TYPE: ByteArray::cast(this)->ByteArrayPrint(out); break; + case FREE_SPACE_TYPE: + FreeSpace::cast(this)->FreeSpacePrint(out); + break; case EXTERNAL_PIXEL_ARRAY_TYPE: ExternalPixelArray::cast(this)->ExternalPixelArrayPrint(out); break; @@ -189,6 +195,11 @@ void ByteArray::ByteArrayPrint(FILE* out) { } +void FreeSpace::FreeSpacePrint(FILE* out) { + PrintF(out, "free space, size %d", Size()); +} + + void ExternalPixelArray::ExternalPixelArrayPrint(FILE* out) { PrintF(out, "external pixel array"); } @@ -256,16 +267,37 @@ void JSObject::PrintProperties(FILE* out) { descs->GetCallbacksObject(i)->ShortPrint(out); PrintF(out, " (callback)\n"); break; + case ELEMENTS_TRANSITION: { + PrintF(out, "(elements transition to "); + Object* descriptor_contents = descs->GetValue(i); + if (descriptor_contents->IsMap()) { + Map* map = Map::cast(descriptor_contents); + PrintElementsKind(out, map->elements_kind()); + } else { + FixedArray* map_array = FixedArray::cast(descriptor_contents); + for (int i = 0; i < map_array->length(); ++i) { + Map* map = Map::cast(map_array->get(i)); + if (i != 0) { + PrintF(out, ", "); + } + PrintElementsKind(out, map->elements_kind()); + } + } + PrintF(out, ")\n"); + break; + } case MAP_TRANSITION: - PrintF(out, " (map transition)\n"); + PrintF(out, "(map transition)\n"); break; case CONSTANT_TRANSITION: - PrintF(out, " (constant transition)\n"); + PrintF(out, "(constant transition)\n"); break; case NULL_DESCRIPTOR: - PrintF(out, " (null descriptor)\n"); + PrintF(out, "(null descriptor)\n"); break; - default: + case NORMAL: // only in slow mode + case HANDLER: // only in lookup results, not in descriptors + case INTERCEPTOR: // only in lookup results, not in descriptors UNREACHABLE(); break; } @@ -277,7 +309,10 @@ void JSObject::PrintProperties(FILE* out) { void JSObject::PrintElements(FILE* out) { - switch (GetElementsKind()) { + // Don't call GetElementsKind, its validation code can cause the printer to + // fail when debugging. + switch (map()->elements_kind()) { + case FAST_SMI_ONLY_ELEMENTS: case FAST_ELEMENTS: { // Print in array notation for non-sparse arrays. FixedArray* p = FixedArray::cast(elements()); @@ -385,8 +420,13 @@ void JSObject::PrintElements(FILE* out) { void JSObject::JSObjectPrint(FILE* out) { PrintF(out, "%p: [JSObject]\n", reinterpret_cast<void*>(this)); - PrintF(out, " - map = %p\n", reinterpret_cast<void*>(map())); - PrintF(out, " - prototype = %p\n", reinterpret_cast<void*>(GetPrototype())); + PrintF(out, " - map = %p [", reinterpret_cast<void*>(map())); + // Don't call GetElementsKind, its validation code can cause the printer to + // fail when debugging. + PrintElementsKind(out, this->map()->elements_kind()); + PrintF(out, + "]\n - prototype = %p\n", + reinterpret_cast<void*>(GetPrototype())); PrintF(out, " {\n"); PrintProperties(out); PrintElements(out); @@ -406,6 +446,9 @@ static const char* TypeToString(InstanceType type) { case EXTERNAL_ASCII_SYMBOL_TYPE: case EXTERNAL_SYMBOL_WITH_ASCII_DATA_TYPE: case EXTERNAL_SYMBOL_TYPE: return "EXTERNAL_SYMBOL"; + case SHORT_EXTERNAL_ASCII_SYMBOL_TYPE: + case SHORT_EXTERNAL_SYMBOL_WITH_ASCII_DATA_TYPE: + case SHORT_EXTERNAL_SYMBOL_TYPE: return "SHORT_EXTERNAL_SYMBOL"; case ASCII_STRING_TYPE: return "ASCII_STRING"; case STRING_TYPE: return "TWO_BYTE_STRING"; case CONS_STRING_TYPE: @@ -413,8 +456,12 @@ static const char* TypeToString(InstanceType type) { case EXTERNAL_ASCII_STRING_TYPE: case EXTERNAL_STRING_WITH_ASCII_DATA_TYPE: case EXTERNAL_STRING_TYPE: return "EXTERNAL_STRING"; + case SHORT_EXTERNAL_ASCII_STRING_TYPE: + case SHORT_EXTERNAL_STRING_WITH_ASCII_DATA_TYPE: + case SHORT_EXTERNAL_STRING_TYPE: return "SHORT_EXTERNAL_STRING"; case FIXED_ARRAY_TYPE: return "FIXED_ARRAY"; case BYTE_ARRAY_TYPE: return "BYTE_ARRAY"; + case FREE_SPACE_TYPE: return "FREE_SPACE"; case EXTERNAL_PIXEL_ARRAY_TYPE: return "EXTERNAL_PIXEL_ARRAY"; case EXTERNAL_BYTE_ARRAY_TYPE: return "EXTERNAL_BYTE_ARRAY"; case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE: @@ -458,7 +505,9 @@ void Map::MapPrint(FILE* out) { PrintF(out, " - type: %s\n", TypeToString(instance_type())); PrintF(out, " - instance size: %d\n", instance_size()); PrintF(out, " - inobject properties: %d\n", inobject_properties()); - PrintF(out, " - pre-allocated property fields: %d\n", + PrintF(out, " - elements kind: "); + PrintElementsKind(out, elements_kind()); + PrintF(out, "\n - pre-allocated property fields: %d\n", pre_allocated_property_fields()); PrintF(out, " - unused property fields: %d\n", unused_property_fields()); if (is_hidden_prototype()) { @@ -516,6 +565,16 @@ void FixedArray::FixedArrayPrint(FILE* out) { } +void FixedDoubleArray::FixedDoubleArrayPrint(FILE* out) { + HeapObject::PrintHeader(out, "FixedDoubleArray"); + PrintF(out, " - length: %d", length()); + for (int i = 0; i < length(); i++) { + PrintF(out, "\n [%d]: %g", i, get_scalar(i)); + } + PrintF(out, "\n"); +} + + void JSValue::JSValuePrint(FILE* out) { HeapObject::PrintHeader(out, "ValueObject"); value()->Print(out); @@ -587,6 +646,8 @@ void JSProxy::JSProxyPrint(FILE* out) { PrintF(out, " - map = 0x%p\n", reinterpret_cast<void*>(map())); PrintF(out, " - handler = "); handler()->Print(out); + PrintF(out, " - hash = "); + hash()->Print(out); PrintF(out, "\n"); } @@ -607,7 +668,6 @@ void JSFunctionProxy::JSFunctionProxyPrint(FILE* out) { void JSWeakMap::JSWeakMapPrint(FILE* out) { HeapObject::PrintHeader(out, "JSWeakMap"); PrintF(out, " - map = 0x%p\n", reinterpret_cast<void*>(map())); - PrintF(out, " - number of elements = %d\n", table()->NumberOfElements()); PrintF(out, " - table = "); table()->ShortPrint(out); PrintF(out, "\n"); @@ -707,7 +767,7 @@ void Code::CodePrint(FILE* out) { void Foreign::ForeignPrint(FILE* out) { - PrintF(out, "foreign address : %p", address()); + PrintF(out, "foreign address : %p", foreign_address()); } @@ -802,10 +862,15 @@ void FunctionTemplateInfo::FunctionTemplateInfoPrint(FILE* out) { void ObjectTemplateInfo::ObjectTemplateInfoPrint(FILE* out) { HeapObject::PrintHeader(out, "ObjectTemplateInfo"); + PrintF(out, " - tag: "); + tag()->ShortPrint(out); + PrintF(out, "\n - property_list: "); + property_list()->ShortPrint(out); PrintF(out, "\n - constructor: "); constructor()->ShortPrint(out); PrintF(out, "\n - internal_field_count: "); internal_field_count()->ShortPrint(out); + PrintF(out, "\n"); } |