| Index: src/objects-printer.cc
 | 
| diff --git a/src/objects-printer.cc b/src/objects-printer.cc
 | 
| index 501c3db35b15dc32e94a3838a4597843744674b6..f2fee648f9b662759874797d905fea20c885f75a 100644
 | 
| --- a/src/objects-printer.cc
 | 
| +++ b/src/objects-printer.cc
 | 
| @@ -33,7 +33,7 @@
 | 
|  
 | 
|  
 | 
|  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,7 +117,8 @@
 | 
|        JSBuiltinsObject::cast(this)->JSBuiltinsObjectPrint(os);
 | 
|        break;
 | 
|      case JS_VALUE_TYPE:
 | 
| -      JSValue::cast(this)->JSValuePrint(os);
 | 
| +      os << "Value wrapper around:";
 | 
| +      JSValue::cast(this)->value()->Print(os);
 | 
|        break;
 | 
|      case JS_DATE_TYPE:
 | 
|        JSDate::cast(this)->JSDatePrint(os);
 | 
| @@ -387,30 +388,19 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -static void JSObjectPrintHeader(std::ostream& os, JSObject* obj,
 | 
| -                                const char* id) {  // NOLINT
 | 
| -  obj->PrintHeader(os, id);
 | 
| +void JSObject::JSObjectPrint(std::ostream& os) {  // NOLINT
 | 
| +  HeapObject::PrintHeader(os, "JSObject");
 | 
|    // Don't call GetElementsKind, its validation code can cause the printer to
 | 
|    // fail when debugging.
 | 
| -  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);
 | 
| +  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);
 | 
|    os << " }\n";
 | 
| -}
 | 
| -
 | 
| -
 | 
| -void JSObject::JSObjectPrint(std::ostream& os) {  // NOLINT
 | 
| -  JSObjectPrintHeader(os, this, "JSObject");
 | 
| -  JSObjectPrintBody(os, this);
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -471,7 +461,6 @@
 | 
|    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());
 | 
| @@ -645,21 +634,20 @@
 | 
|  
 | 
|  
 | 
|  void JSValue::JSValuePrint(std::ostream& os) {  // NOLINT
 | 
| -  JSObjectPrintHeader(os, this, "JSValue");
 | 
| -  os << "\n - value = " << Brief(value());
 | 
| -  JSObjectPrintBody(os, this);
 | 
| +  HeapObject::PrintHeader(os, "ValueObject");
 | 
| +  value()->Print(os);
 | 
|  }
 | 
|  
 | 
|  
 | 
|  void JSMessageObject::JSMessageObjectPrint(std::ostream& os) {  // NOLINT
 | 
| -  JSObjectPrintHeader(os, this, "JSMessageObject");
 | 
| -  os << "\n - type: " << type();
 | 
| +  HeapObject::PrintHeader(os, "JSMessageObject");
 | 
| +  os << " - 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());
 | 
| -  JSObjectPrintBody(os, this);
 | 
| +  os << "\n";
 | 
|  }
 | 
|  
 | 
|  
 | 
| 
 |