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

Unified Diff: src/objects-printer.cc

Issue 659363002: More details printed for Map, DescriptorArray and TransitionArray. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: gdbinit updated Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/objects.cc ('k') | src/property.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/objects-printer.cc
diff --git a/src/objects-printer.cc b/src/objects-printer.cc
index c8149bb3295d126256f6a27c75cbd92dd7fa970f..d9a8676efcc95344bd7df326bb2d341950985535 100644
--- a/src/objects-printer.cc
+++ b/src/objects-printer.cc
@@ -347,39 +347,7 @@ void JSObject::PrintElements(std::ostream& os) { // NOLINT
void JSObject::PrintTransitions(std::ostream& os) { // NOLINT
if (!map()->HasTransitionArray()) return;
- TransitionArray* transitions = map()->transitions();
- for (int i = 0; i < transitions->number_of_transitions(); i++) {
- Name* key = transitions->GetKey(i);
- os << " ";
- key->NamePrint(os);
- os << ": ";
- if (key == GetHeap()->frozen_symbol()) {
- os << " (transition to frozen)\n";
- } else if (key == GetHeap()->elements_transition_symbol()) {
- os << " (transition to "
- << ElementsKindToString(transitions->GetTarget(i)->elements_kind())
- << ")\n";
- } else if (key == GetHeap()->observed_symbol()) {
- os << " (transition to Object.observe)\n";
- } else {
- switch (transitions->GetTargetDetails(i).type()) {
- case FIELD: {
- os << " (transition to field)\n";
- break;
- }
- case CONSTANT:
- os << " (transition to constant)\n";
- break;
- case CALLBACKS:
- os << " (transition to callback)\n";
- break;
- // Values below are never in the target descriptor array.
- case NORMAL:
- UNREACHABLE();
- break;
- }
- }
- }
+ map()->transitions()->PrintTransitions(os, false);
}
@@ -442,6 +410,8 @@ void Map::MapPrint(std::ostream& os) { // NOLINT
os << "\n - pre-allocated property fields: "
<< pre_allocated_property_fields() << "\n";
os << " - unused property fields: " << unused_property_fields() << "\n";
+ if (is_dictionary_map()) os << " - dictionary_map\n";
+ if (is_prototype_map()) os << " - prototype_map\n";
if (is_hidden_prototype()) os << " - hidden_prototype\n";
if (has_named_interceptor()) os << " - named_interceptor\n";
if (has_indexed_interceptor()) os << " - indexed_interceptor\n";
@@ -605,10 +575,13 @@ void String::StringPrint(std::ostream& os) { // NOLINT
void Name::NamePrint(std::ostream& os) { // NOLINT
- if (IsString())
+ if (IsString()) {
String::cast(this)->StringPrint(os);
- else
+ } else if (IsSymbol()) {
+ Symbol::cast(this)->name()->Print(os);
+ } else {
os << Brief(this);
+ }
}
@@ -1082,41 +1055,70 @@ void BreakPointInfo::BreakPointInfoPrint(std::ostream& os) { // NOLINT
}
+void DescriptorArray::Print() {
+ OFStream os(stdout);
+ this->PrintDescriptors(os);
+ os << std::flush;
+}
+
+
void DescriptorArray::PrintDescriptors(std::ostream& os) { // NOLINT
- os << "Descriptor array " << number_of_descriptors() << "\n";
+ os << "Descriptor array " << number_of_descriptors() << "\n";
for (int i = 0; i < number_of_descriptors(); i++) {
Descriptor desc;
Get(i, &desc);
- os << " " << i << ": " << desc;
+ os << " " << i << ": " << desc << "\n";
}
os << "\n";
}
-void TransitionArray::PrintTransitions(std::ostream& os) { // NOLINT
- os << "Transition array %d\n", number_of_transitions();
+void TransitionArray::Print() {
+ OFStream os(stdout);
+ this->PrintTransitions(os);
+ os << std::flush;
+}
+
+
+void TransitionArray::PrintTransitions(std::ostream& os,
+ bool print_header) { // NOLINT
+ if (print_header) {
+ os << "Transition array " << number_of_transitions() << "\n";
+ }
for (int i = 0; i < number_of_transitions(); i++) {
- os << " " << i << ": ";
- GetKey(i)->NamePrint(os);
+ Name* key = GetKey(i);
+ os << " ";
+ key->NamePrint(os);
os << ": ";
- switch (GetTargetDetails(i).type()) {
- case FIELD: {
- os << " (transition to field)\n";
- break;
+ if (key == GetHeap()->frozen_symbol()) {
+ os << " (transition to frozen)";
+ } else if (key == GetHeap()->elements_transition_symbol()) {
+ os << " (transition to "
+ << ElementsKindToString(GetTarget(i)->elements_kind()) << ")";
+ } else if (key == GetHeap()->observed_symbol()) {
+ os << " (transition to Object.observe)";
+ } else {
+ PropertyDetails details = GetTargetDetails(i);
+ switch (details.type()) {
+ case FIELD: {
+ os << " (transition to field)";
+ break;
+ }
+ case CONSTANT:
+ os << " (transition to constant " << Brief(GetTargetValue(i)) << ")";
+ break;
+ case CALLBACKS:
+ os << " (transition to callback " << Brief(GetTargetValue(i)) << ")";
+ break;
+ // Values below are never in the target descriptor array.
+ case NORMAL:
+ UNREACHABLE();
+ break;
}
- case CONSTANT:
- os << " (transition to constant)\n";
- break;
- case CALLBACKS:
- os << " (transition to callback)\n";
- break;
- // Values below are never in the target descriptor array.
- case NORMAL:
- UNREACHABLE();
- break;
+ os << ", attrs: " << details.attributes();
}
+ os << " -> " << Brief(GetTarget(i)) << "\n";
}
- os << "\n";
}
« no previous file with comments | « src/objects.cc ('k') | src/property.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698