| 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); | 
| } | 
|  | 
|  | 
|  |