| Index: src/objects-printer.cc
|
| diff --git a/src/objects-printer.cc b/src/objects-printer.cc
|
| index f2fee648f9b662759874797d905fea20c885f75a..501c3db35b15dc32e94a3838a4597843744674b6 100644
|
| --- a/src/objects-printer.cc
|
| +++ b/src/objects-printer.cc
|
| @@ -33,7 +33,7 @@ void Object::Print(std::ostream& os) { // NOLINT
|
|
|
|
|
| void HeapObject::PrintHeader(std::ostream& os, const char* id) { // NOLINT
|
| - os << "" << reinterpret_cast<void*>(this) << ": [" << id << "]\n";
|
| + os << reinterpret_cast<void*>(this) << ": [" << id << "]\n";
|
| }
|
|
|
|
|
| @@ -117,8 +117,7 @@ void HeapObject::HeapObjectPrint(std::ostream& os) { // NOLINT
|
| JSBuiltinsObject::cast(this)->JSBuiltinsObjectPrint(os);
|
| break;
|
| case JS_VALUE_TYPE:
|
| - os << "Value wrapper around:";
|
| - JSValue::cast(this)->value()->Print(os);
|
| + JSValue::cast(this)->JSValuePrint(os);
|
| break;
|
| case JS_DATE_TYPE:
|
| JSDate::cast(this)->JSDatePrint(os);
|
| @@ -388,22 +387,33 @@ void JSObject::PrintElements(std::ostream& os) { // NOLINT
|
| }
|
|
|
|
|
| -void JSObject::JSObjectPrint(std::ostream& os) { // NOLINT
|
| - HeapObject::PrintHeader(os, "JSObject");
|
| +static void JSObjectPrintHeader(std::ostream& os, JSObject* obj,
|
| + const char* id) { // NOLINT
|
| + obj->PrintHeader(os, id);
|
| // Don't call GetElementsKind, its validation code can cause the printer to
|
| // fail when debugging.
|
| - PrototypeIterator iter(GetIsolate(), this);
|
| - os << " - map = " << reinterpret_cast<void*>(map()) << " ["
|
| - << ElementsKindToString(this->map()->elements_kind())
|
| - << "]\n - prototype = " << reinterpret_cast<void*>(iter.GetCurrent())
|
| - << "\n {\n";
|
| - PrintProperties(os);
|
| - PrintTransitions(os);
|
| - PrintElements(os);
|
| + PrototypeIterator iter(obj->GetIsolate(), obj);
|
| + os << " - map = " << reinterpret_cast<void*>(obj->map()) << " ["
|
| + << ElementsKindToString(obj->map()->elements_kind())
|
| + << "]\n - prototype = " << reinterpret_cast<void*>(iter.GetCurrent());
|
| +}
|
| +
|
| +
|
| +static void JSObjectPrintBody(std::ostream& os, JSObject* obj) { // NOLINT
|
| + os << "\n {\n";
|
| + obj->PrintProperties(os);
|
| + obj->PrintTransitions(os);
|
| + obj->PrintElements(os);
|
| os << " }\n";
|
| }
|
|
|
|
|
| +void JSObject::JSObjectPrint(std::ostream& os) { // NOLINT
|
| + JSObjectPrintHeader(os, this, "JSObject");
|
| + JSObjectPrintBody(os, this);
|
| +}
|
| +
|
| +
|
| void JSModule::JSModulePrint(std::ostream& os) { // NOLINT
|
| HeapObject::PrintHeader(os, "JSModule");
|
| os << " - map = " << reinterpret_cast<void*>(map()) << "\n"
|
| @@ -461,6 +471,7 @@ void Map::MapPrint(std::ostream& os) { // NOLINT
|
| if (is_access_check_needed()) os << " - access_check_needed\n";
|
| if (!is_extensible()) os << " - non-extensible\n";
|
| if (is_observed()) os << " - observed\n";
|
| + if (is_strong()) os << " - strong_map\n";
|
| if (is_prototype_map()) {
|
| os << " - prototype_map\n";
|
| os << " - prototype info: " << Brief(prototype_info());
|
| @@ -634,20 +645,21 @@ void TypeFeedbackVector::TypeFeedbackVectorPrint(std::ostream& os) { // NOLINT
|
|
|
|
|
| void JSValue::JSValuePrint(std::ostream& os) { // NOLINT
|
| - HeapObject::PrintHeader(os, "ValueObject");
|
| - value()->Print(os);
|
| + JSObjectPrintHeader(os, this, "JSValue");
|
| + os << "\n - value = " << Brief(value());
|
| + JSObjectPrintBody(os, this);
|
| }
|
|
|
|
|
| void JSMessageObject::JSMessageObjectPrint(std::ostream& os) { // NOLINT
|
| - HeapObject::PrintHeader(os, "JSMessageObject");
|
| - os << " - type: " << type();
|
| + JSObjectPrintHeader(os, this, "JSMessageObject");
|
| + os << "\n - type: " << type();
|
| os << "\n - arguments: " << Brief(argument());
|
| os << "\n - start_position: " << start_position();
|
| os << "\n - end_position: " << end_position();
|
| os << "\n - script: " << Brief(script());
|
| os << "\n - stack_frames: " << Brief(stack_frames());
|
| - os << "\n";
|
| + JSObjectPrintBody(os, this);
|
| }
|
|
|
|
|
|
|