Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/objects-printer.cc

Issue 2627003005: [printing] Remove duplicate code that prints property details. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/objects.h" 5 #include "src/objects.h"
6 6
7 #include <iomanip> 7 #include <iomanip>
8 #include <memory> 8 #include <memory>
9 9
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 329
330 330
331 void JSObject::PrintProperties(std::ostream& os) { // NOLINT 331 void JSObject::PrintProperties(std::ostream& os) { // NOLINT
332 if (HasFastProperties()) { 332 if (HasFastProperties()) {
333 DescriptorArray* descs = map()->instance_descriptors(); 333 DescriptorArray* descs = map()->instance_descriptors();
334 for (int i = 0; i < map()->NumberOfOwnDescriptors(); i++) { 334 for (int i = 0; i < map()->NumberOfOwnDescriptors(); i++) {
335 os << "\n "; 335 os << "\n ";
336 descs->GetKey(i)->NamePrint(os); 336 descs->GetKey(i)->NamePrint(os);
337 os << ": "; 337 os << ": ";
338 PropertyDetails details = descs->GetDetails(i); 338 PropertyDetails details = descs->GetDetails(i);
339 FieldIndex field_index;
340 switch (details.location()) { 339 switch (details.location()) {
341 case kField: { 340 case kField: {
342 field_index = FieldIndex::ForDescriptor(map(), i); 341 FieldIndex field_index = FieldIndex::ForDescriptor(map(), i);
343 if (IsUnboxedDoubleField(field_index)) { 342 if (IsUnboxedDoubleField(field_index)) {
344 os << "<unboxed double> " << RawFastDoublePropertyAt(field_index); 343 os << "<unboxed double> " << RawFastDoublePropertyAt(field_index);
345 } else { 344 } else {
346 os << Brief(RawFastPropertyAt(field_index)); 345 os << Brief(RawFastPropertyAt(field_index));
347 } 346 }
348 break; 347 break;
349 } 348 }
350 case kDescriptor: 349 case kDescriptor:
351 os << Brief(descs->GetValue(i)); 350 os << Brief(descs->GetValue(i));
352 break; 351 break;
353 } 352 }
354 os << " (" << (details.kind() == kData ? "data" : "accessor"); 353 os << " ";
355 switch (details.location()) { 354 details.PrintAsFastTo(os, PropertyDetails::kForProperties);
356 case kField: {
357 os << " field at offset " << field_index.property_index();
358 break;
359 }
360 case kDescriptor:
361 break;
362 }
363 os << ")";
364 } 355 }
365 } else if (IsJSGlobalObject()) { 356 } else if (IsJSGlobalObject()) {
366 global_dictionary()->Print(os); 357 global_dictionary()->Print(os);
367 } else { 358 } else {
368 property_dictionary()->Print(os); 359 property_dictionary()->Print(os);
369 } 360 }
370 } 361 }
371 362
372 namespace { 363 namespace {
373 364
(...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after
1141 void Cell::CellPrint(std::ostream& os) { // NOLINT 1132 void Cell::CellPrint(std::ostream& os) { // NOLINT
1142 HeapObject::PrintHeader(os, "Cell"); 1133 HeapObject::PrintHeader(os, "Cell");
1143 os << "\n - value: " << Brief(value()); 1134 os << "\n - value: " << Brief(value());
1144 os << "\n"; 1135 os << "\n";
1145 } 1136 }
1146 1137
1147 1138
1148 void PropertyCell::PropertyCellPrint(std::ostream& os) { // NOLINT 1139 void PropertyCell::PropertyCellPrint(std::ostream& os) { // NOLINT
1149 HeapObject::PrintHeader(os, "PropertyCell"); 1140 HeapObject::PrintHeader(os, "PropertyCell");
1150 os << "\n - value: " << Brief(value()); 1141 os << "\n - value: " << Brief(value());
1151 os << "\n - details: " << property_details(); 1142 os << "\n - details: ";
1143 property_details().PrintAsSlowTo(os);
1152 PropertyCellType cell_type = property_details().cell_type(); 1144 PropertyCellType cell_type = property_details().cell_type();
1153 os << "\n - cell_type: "; 1145 os << "\n - cell_type: ";
1154 if (value()->IsTheHole(GetIsolate())) { 1146 if (value()->IsTheHole(GetIsolate())) {
1155 switch (cell_type) { 1147 switch (cell_type) {
1156 case PropertyCellType::kUninitialized: 1148 case PropertyCellType::kUninitialized:
1157 os << "Uninitialized"; 1149 os << "Uninitialized";
1158 break; 1150 break;
1159 case PropertyCellType::kInvalidated: 1151 case PropertyCellType::kInvalidated:
1160 os << "Invalidated"; 1152 os << "Invalidated";
1161 break; 1153 break;
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
1583 1575
1584 void DescriptorArray::Print() { 1576 void DescriptorArray::Print() {
1585 OFStream os(stdout); 1577 OFStream os(stdout);
1586 this->PrintDescriptors(os); 1578 this->PrintDescriptors(os);
1587 os << std::flush; 1579 os << std::flush;
1588 } 1580 }
1589 1581
1590 1582
1591 void DescriptorArray::PrintDescriptors(std::ostream& os) { // NOLINT 1583 void DescriptorArray::PrintDescriptors(std::ostream& os) { // NOLINT
1592 HandleScope scope(GetIsolate()); 1584 HandleScope scope(GetIsolate());
1593 os << "Descriptor array #" << number_of_descriptors(); 1585 os << "Descriptor array #" << number_of_descriptors() << ":";
1594 for (int i = 0; i < number_of_descriptors(); i++) { 1586 for (int i = 0; i < number_of_descriptors(); i++) {
1595 Descriptor desc; 1587 Name* key = GetKey(i);
1596 Get(i, &desc); 1588 os << "\n [" << i << "]: ";
1597 os << "\n " << i << ": " << desc; 1589 #ifdef OBJECT_PRINT
1590 key->NamePrint(os);
1591 #else
1592 key->ShortPrint(os);
1593 #endif
1594 os << " ";
1595 PrintDescriptorDetails(os, i, PropertyDetails::kPrintFull);
1598 } 1596 }
1599 os << "\n"; 1597 os << "\n";
1600 } 1598 }
1601 1599
1600 void DescriptorArray::PrintDescriptorDetails(std::ostream& os, int descriptor,
1601 PropertyDetails::PrintMode mode) {
1602 PropertyDetails details = GetDetails(descriptor);
1603 details.PrintAsFastTo(os, mode);
1604 os << " @ ";
1605 Object* value = GetValue(descriptor);
1606 switch (details.location()) {
1607 case kField: {
1608 FieldType* field_type = Map::UnwrapFieldType(value);
1609 field_type->PrintTo(os);
1610 break;
1611 }
1612 case kDescriptor:
1613 os << Brief(value);
1614 if (value->IsAccessorPair()) {
1615 AccessorPair* pair = AccessorPair::cast(value);
1616 os << "(get: " << Brief(pair->getter())
1617 << ", set: " << Brief(pair->setter()) << ")";
1618 }
1619 break;
1620 }
1621 }
1602 1622
1603 void TransitionArray::Print() { 1623 void TransitionArray::Print() {
1604 OFStream os(stdout); 1624 OFStream os(stdout);
1605 TransitionArray::PrintTransitions(os, this); 1625 TransitionArray::PrintTransitions(os, this);
1606 os << "\n" << std::flush; 1626 os << "\n" << std::flush;
1607 } 1627 }
1608 1628
1609 1629
1610 void TransitionArray::PrintTransitions(std::ostream& os, Object* transitions, 1630 void TransitionArray::PrintTransitions(std::ostream& os, Object* transitions,
1611 bool print_header) { // NOLINT 1631 bool print_header) { // NOLINT
(...skipping 17 matching lines...) Expand all
1629 } else if (key == heap->sealed_symbol()) { 1649 } else if (key == heap->sealed_symbol()) {
1630 os << "(transition to sealed)"; 1650 os << "(transition to sealed)";
1631 } else if (key == heap->frozen_symbol()) { 1651 } else if (key == heap->frozen_symbol()) {
1632 os << "(transition to frozen)"; 1652 os << "(transition to frozen)";
1633 } else if (key == heap->elements_transition_symbol()) { 1653 } else if (key == heap->elements_transition_symbol()) {
1634 os << "(transition to " << ElementsKindToString(target->elements_kind()) 1654 os << "(transition to " << ElementsKindToString(target->elements_kind())
1635 << ")"; 1655 << ")";
1636 } else if (key == heap->strict_function_transition_symbol()) { 1656 } else if (key == heap->strict_function_transition_symbol()) {
1637 os << " (transition to strict function)"; 1657 os << " (transition to strict function)";
1638 } else { 1658 } else {
1639 PropertyDetails details = GetTargetDetails(key, target); 1659 DCHECK(!IsSpecialTransition(key));
1640 os << "(transition to "; 1660 os << "(transition to ";
1641 if (details.location() == kDescriptor) { 1661 int descriptor = target->LastAdded();
1642 os << "immutable "; 1662 DescriptorArray* descriptors = target->instance_descriptors();
1643 } 1663 descriptors->PrintDescriptorDetails(os, descriptor,
1644 os << (details.kind() == kData ? "data" : "accessor"); 1664 PropertyDetails::kForTransitions);
1645 if (details.location() == kDescriptor) { 1665 os << ")";
1646 Object* value =
1647 target->instance_descriptors()->GetValue(target->LastAdded());
1648 os << " " << Brief(value);
1649 } else {
1650 os << " field";
1651 }
1652 os << ", attrs: " << details.attributes() << ")";
1653 } 1666 }
1654 os << " -> " << Brief(target); 1667 os << " -> " << Brief(target);
1655 } 1668 }
1656 } 1669 }
1657 1670
1658 1671
1659 void JSObject::PrintTransitions(std::ostream& os) { // NOLINT 1672 void JSObject::PrintTransitions(std::ostream& os) { // NOLINT
1660 Object* transitions = map()->raw_transitions(); 1673 Object* transitions = map()->raw_transitions();
1661 int num_transitions = TransitionArray::NumberOfTransitions(transitions); 1674 int num_transitions = TransitionArray::NumberOfTransitions(transitions);
1662 if (num_transitions == 0) return; 1675 if (num_transitions == 0) return;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1709 printf("Not a transition array\n"); 1722 printf("Not a transition array\n");
1710 } else { 1723 } else {
1711 reinterpret_cast<i::TransitionArray*>(object)->Print(); 1724 reinterpret_cast<i::TransitionArray*>(object)->Print();
1712 } 1725 }
1713 } 1726 }
1714 1727
1715 extern void _v8_internal_Print_StackTrace() { 1728 extern void _v8_internal_Print_StackTrace() {
1716 i::Isolate* isolate = i::Isolate::Current(); 1729 i::Isolate* isolate = i::Isolate::Current();
1717 isolate->PrintStack(stdout); 1730 isolate->PrintStack(stdout);
1718 } 1731 }
OLDNEW
« no previous file with comments | « src/objects-inl.h ('k') | src/property.h » ('j') | src/property.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698