| Index: src/objects-printer.cc
|
| diff --git a/src/objects-printer.cc b/src/objects-printer.cc
|
| index 45018be9a0490c19806c42f87e7b7d4803d92f77..94e0b99e30921782d43764e18d7d95a3281272b3 100644
|
| --- a/src/objects-printer.cc
|
| +++ b/src/objects-printer.cc
|
| @@ -511,7 +511,7 @@ static void JSObjectPrintHeader(std::ostream& os, JSObject* obj,
|
|
|
| static void JSObjectPrintBody(std::ostream& os, JSObject* obj, // NOLINT
|
| bool print_elements = true) {
|
| - os << "\n - properties = {";
|
| + os << "\n - properties = " << Brief(obj->properties()) << " {";
|
| obj->PrintProperties(os);
|
| os << "\n }\n";
|
| if (print_elements && obj->elements()->length() > 0) {
|
| @@ -597,7 +597,8 @@ void Map::MapPrint(std::ostream& os) { // NOLINT
|
| << "#" << NumberOfOwnDescriptors() << ": "
|
| << Brief(instance_descriptors());
|
| if (FLAG_unbox_double_fields) {
|
| - os << "\n - layout descriptor: " << Brief(layout_descriptor());
|
| + os << "\n - layout descriptor: ";
|
| + layout_descriptor()->ShortPrint(os);
|
| }
|
| int nof_transitions = TransitionArray::NumberOfTransitions(raw_transitions());
|
| if (nof_transitions > 0) {
|
| @@ -1449,16 +1450,24 @@ void LayoutDescriptor::Print() {
|
| os << std::flush;
|
| }
|
|
|
| +void LayoutDescriptor::ShortPrint(std::ostream& os) {
|
| + if (IsSmi()) {
|
| + os << this; // Print tagged value for easy use with "jld" gdb macro.
|
| + } else {
|
| + os << Brief(this);
|
| + }
|
| +}
|
|
|
| void LayoutDescriptor::Print(std::ostream& os) { // NOLINT
|
| os << "Layout descriptor: ";
|
| - if (IsOddball() && IsUninitialized(HeapObject::cast(this)->GetIsolate())) {
|
| - os << "<uninitialized>";
|
| - } else if (IsFastPointerLayout()) {
|
| + if (IsFastPointerLayout()) {
|
| os << "<all tagged>";
|
| } else if (IsSmi()) {
|
| os << "fast";
|
| PrintBitMask(os, static_cast<uint32_t>(Smi::cast(this)->value()));
|
| + } else if (IsOddball() &&
|
| + IsUninitialized(HeapObject::cast(this)->GetIsolate())) {
|
| + os << "<uninitialized>";
|
| } else {
|
| os << "slow";
|
| int len = length();
|
| @@ -1638,6 +1647,15 @@ extern void _v8_internal_Print_DescriptorArray(void* object) {
|
| }
|
| }
|
|
|
| +extern void _v8_internal_Print_LayoutDescriptor(void* object) {
|
| + i::Object* o = reinterpret_cast<i::Object*>(object);
|
| + if (!o->IsLayoutDescriptor()) {
|
| + printf("Not a layout descriptor\n");
|
| + } else {
|
| + reinterpret_cast<i::LayoutDescriptor*>(object)->Print();
|
| + }
|
| +}
|
| +
|
| extern void _v8_internal_Print_TransitionArray(void* object) {
|
| if (reinterpret_cast<i::Object*>(object)->IsSmi()) {
|
| printf("Not a transition array\n");
|
|
|