OLD | NEW |
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 "src/disasm.h" | 7 #include "src/disasm.h" |
8 #include "src/disassembler.h" | 8 #include "src/disassembler.h" |
9 #include "src/interpreter/bytecodes.h" | 9 #include "src/interpreter/bytecodes.h" |
10 #include "src/objects-inl.h" | 10 #include "src/objects-inl.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 void Object::Print(std::ostream& os) { // NOLINT | 26 void Object::Print(std::ostream& os) { // NOLINT |
27 if (IsSmi()) { | 27 if (IsSmi()) { |
28 Smi::cast(this)->SmiPrint(os); | 28 Smi::cast(this)->SmiPrint(os); |
29 } else { | 29 } else { |
30 HeapObject::cast(this)->HeapObjectPrint(os); | 30 HeapObject::cast(this)->HeapObjectPrint(os); |
31 } | 31 } |
32 } | 32 } |
33 | 33 |
34 | 34 |
35 void HeapObject::PrintHeader(std::ostream& os, const char* id) { // NOLINT | 35 void HeapObject::PrintHeader(std::ostream& os, const char* id) { // NOLINT |
36 os << reinterpret_cast<void*>(this) << ": [" << id << "]"; | 36 os << reinterpret_cast<void*>(this) << ": [" << id << "]\n"; |
37 } | 37 } |
38 | 38 |
39 | 39 |
40 void HeapObject::HeapObjectPrint(std::ostream& os) { // NOLINT | 40 void HeapObject::HeapObjectPrint(std::ostream& os) { // NOLINT |
41 InstanceType instance_type = map()->instance_type(); | 41 InstanceType instance_type = map()->instance_type(); |
42 | 42 |
43 HandleScope scope(GetIsolate()); | 43 HandleScope scope(GetIsolate()); |
44 if (instance_type < FIRST_NONSTRING_TYPE) { | 44 if (instance_type < FIRST_NONSTRING_TYPE) { |
45 String::cast(this)->StringPrint(os); | 45 String::cast(this)->StringPrint(os); |
46 return; | 46 return; |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
392 } | 392 } |
393 } | 393 } |
394 | 394 |
395 | 395 |
396 static void JSObjectPrintHeader(std::ostream& os, JSObject* obj, | 396 static void JSObjectPrintHeader(std::ostream& os, JSObject* obj, |
397 const char* id) { // NOLINT | 397 const char* id) { // NOLINT |
398 obj->PrintHeader(os, id); | 398 obj->PrintHeader(os, id); |
399 // Don't call GetElementsKind, its validation code can cause the printer to | 399 // Don't call GetElementsKind, its validation code can cause the printer to |
400 // fail when debugging. | 400 // fail when debugging. |
401 PrototypeIterator iter(obj->GetIsolate(), obj); | 401 PrototypeIterator iter(obj->GetIsolate(), obj); |
402 os << "\n - map = " << reinterpret_cast<void*>(obj->map()) << " [" | 402 os << " - map = " << reinterpret_cast<void*>(obj->map()) << " [" |
403 << ElementsKindToString(obj->map()->elements_kind()) | 403 << ElementsKindToString(obj->map()->elements_kind()) |
404 << "]\n - prototype = " << reinterpret_cast<void*>(iter.GetCurrent()); | 404 << "]\n - prototype = " << reinterpret_cast<void*>(iter.GetCurrent()); |
405 } | 405 } |
406 | 406 |
407 | 407 |
408 static void JSObjectPrintBody(std::ostream& os, JSObject* obj, // NOLINT | 408 static void JSObjectPrintBody(std::ostream& os, JSObject* obj, // NOLINT |
409 bool print_elements = true) { | 409 bool print_elements = true) { |
410 os << "\n {"; | 410 os << "\n {"; |
411 obj->PrintProperties(os); | 411 obj->PrintProperties(os); |
412 obj->PrintTransitions(os); | 412 obj->PrintTransitions(os); |
(...skipping 18 matching lines...) Expand all Loading... |
431 void JSModule::JSModulePrint(std::ostream& os) { // NOLINT | 431 void JSModule::JSModulePrint(std::ostream& os) { // NOLINT |
432 JSObjectPrintHeader(os, this, "JSModule"); | 432 JSObjectPrintHeader(os, this, "JSModule"); |
433 os << "\n - context = " << Brief(context()); | 433 os << "\n - context = " << Brief(context()); |
434 os << " - scope_info = " << Brief(scope_info()); | 434 os << " - scope_info = " << Brief(scope_info()); |
435 JSObjectPrintBody(os, this); | 435 JSObjectPrintBody(os, this); |
436 } | 436 } |
437 | 437 |
438 | 438 |
439 void Symbol::SymbolPrint(std::ostream& os) { // NOLINT | 439 void Symbol::SymbolPrint(std::ostream& os) { // NOLINT |
440 HeapObject::PrintHeader(os, "Symbol"); | 440 HeapObject::PrintHeader(os, "Symbol"); |
441 os << "\n - hash: " << Hash(); | 441 os << " - hash: " << Hash(); |
442 os << "\n - name: " << Brief(name()); | 442 os << "\n - name: " << Brief(name()); |
443 if (name()->IsUndefined()) { | 443 if (name()->IsUndefined()) { |
444 os << " (" << PrivateSymbolToName() << ")"; | 444 os << " (" << PrivateSymbolToName() << ")"; |
445 } | 445 } |
446 os << "\n - private: " << is_private(); | 446 os << "\n - private: " << is_private(); |
447 os << "\n"; | 447 os << "\n"; |
448 } | 448 } |
449 | 449 |
450 | 450 |
451 void Map::MapPrint(std::ostream& os) { // NOLINT | 451 void Map::MapPrint(std::ostream& os) { // NOLINT |
452 HeapObject::PrintHeader(os, "Map"); | 452 HeapObject::PrintHeader(os, "Map"); |
453 os << "\n - type: " << instance_type(); | 453 os << " - type: " << instance_type() << "\n"; |
454 os << "\n - instance size: " << instance_size(); | 454 os << " - instance size: " << instance_size() << "\n"; |
455 if (IsJSObjectMap()) { | 455 if (IsJSObjectMap()) { |
456 os << "\n - inobject properties: " << GetInObjectProperties(); | 456 os << " - inobject properties: " << GetInObjectProperties() << "\n"; |
457 } | 457 } |
458 os << "\n - elements kind: " << ElementsKindToString(elements_kind()); | 458 os << " - elements kind: " << ElementsKindToString(elements_kind()) << "\n"; |
459 os << "\n - unused property fields: " << unused_property_fields(); | 459 os << " - unused property fields: " << unused_property_fields() << "\n"; |
460 if (is_deprecated()) os << "\n - deprecated_map"; | 460 if (is_deprecated()) os << " - deprecated_map\n"; |
461 if (is_stable()) os << "\n - stable_map"; | 461 if (is_stable()) os << " - stable_map\n"; |
462 if (is_dictionary_map()) os << "\n - dictionary_map"; | 462 if (is_dictionary_map()) os << " - dictionary_map\n"; |
463 if (is_hidden_prototype()) os << "\n - hidden_prototype"; | 463 if (is_hidden_prototype()) os << " - hidden_prototype\n"; |
464 if (has_named_interceptor()) os << " - named_interceptor"; | 464 if (has_named_interceptor()) os << " - named_interceptor\n"; |
465 if (has_indexed_interceptor()) os << "\n - indexed_interceptor"; | 465 if (has_indexed_interceptor()) os << " - indexed_interceptor\n"; |
466 if (is_undetectable()) os << "\n - undetectable"; | 466 if (is_undetectable()) os << " - undetectable\n"; |
467 if (is_callable()) os << "\n - callable"; | 467 if (is_callable()) os << " - callable\n"; |
468 if (is_constructor()) os << "\n - constructor"; | 468 if (is_constructor()) os << " - constructor\n"; |
469 if (is_access_check_needed()) os << "\n - access_check_needed"; | 469 if (is_access_check_needed()) os << " - access_check_needed\n"; |
470 if (!is_extensible()) os << "\n - non-extensible"; | 470 if (!is_extensible()) os << " - non-extensible\n"; |
471 if (is_observed()) os << "\n - observed"; | 471 if (is_observed()) os << " - observed\n"; |
472 if (is_strong()) os << "\n - strong_map"; | 472 if (is_strong()) os << " - strong_map\n"; |
473 if (is_prototype_map()) { | 473 if (is_prototype_map()) { |
474 os << "\n - prototype_map"; | 474 os << " - prototype_map\n"; |
475 os << "\n - prototype info: " << Brief(prototype_info()); | 475 os << " - prototype info: " << Brief(prototype_info()); |
476 } else { | 476 } else { |
477 os << "\n - back pointer: " << Brief(GetBackPointer()); | 477 os << " - back pointer: " << Brief(GetBackPointer()); |
478 } | 478 } |
479 os << "\n - instance descriptors " << (owns_descriptors() ? "(own) " : "") | 479 os << "\n - instance descriptors " << (owns_descriptors() ? "(own) " : "") |
480 << "#" << NumberOfOwnDescriptors() << ": " | 480 << "#" << NumberOfOwnDescriptors() << ": " |
481 << Brief(instance_descriptors()); | 481 << Brief(instance_descriptors()); |
482 if (FLAG_unbox_double_fields) { | 482 if (FLAG_unbox_double_fields) { |
483 os << "\n - layout descriptor: " << Brief(layout_descriptor()); | 483 os << "\n - layout descriptor: " << Brief(layout_descriptor()); |
484 } | 484 } |
485 int nof_transitions = TransitionArray::NumberOfTransitions(raw_transitions()); | 485 int nof_transitions = TransitionArray::NumberOfTransitions(raw_transitions()); |
486 if (nof_transitions > 0) { | 486 if (nof_transitions > 0) { |
487 os << "\n - transitions #" << nof_transitions << ": " | 487 os << "\n - transitions #" << nof_transitions << ": " |
(...skipping 18 matching lines...) Expand all Loading... |
506 | 506 |
507 void PolymorphicCodeCache::PolymorphicCodeCachePrint( | 507 void PolymorphicCodeCache::PolymorphicCodeCachePrint( |
508 std::ostream& os) { // NOLINT | 508 std::ostream& os) { // NOLINT |
509 HeapObject::PrintHeader(os, "PolymorphicCodeCache"); | 509 HeapObject::PrintHeader(os, "PolymorphicCodeCache"); |
510 os << "\n - cache: " << Brief(cache()); | 510 os << "\n - cache: " << Brief(cache()); |
511 } | 511 } |
512 | 512 |
513 | 513 |
514 void TypeFeedbackInfo::TypeFeedbackInfoPrint(std::ostream& os) { // NOLINT | 514 void TypeFeedbackInfo::TypeFeedbackInfoPrint(std::ostream& os) { // NOLINT |
515 HeapObject::PrintHeader(os, "TypeFeedbackInfo"); | 515 HeapObject::PrintHeader(os, "TypeFeedbackInfo"); |
516 os << "\n - ic_total_count: " << ic_total_count() | 516 os << " - ic_total_count: " << ic_total_count() |
517 << ", ic_with_type_info_count: " << ic_with_type_info_count() | 517 << ", ic_with_type_info_count: " << ic_with_type_info_count() |
518 << ", ic_generic_count: " << ic_generic_count() << "\n"; | 518 << ", ic_generic_count: " << ic_generic_count() << "\n"; |
519 } | 519 } |
520 | 520 |
521 | 521 |
522 void AliasedArgumentsEntry::AliasedArgumentsEntryPrint( | 522 void AliasedArgumentsEntry::AliasedArgumentsEntryPrint( |
523 std::ostream& os) { // NOLINT | 523 std::ostream& os) { // NOLINT |
524 HeapObject::PrintHeader(os, "AliasedArgumentsEntry"); | 524 HeapObject::PrintHeader(os, "AliasedArgumentsEntry"); |
525 os << "\n - aliased_context_slot: " << aliased_context_slot(); | 525 os << "\n - aliased_context_slot: " << aliased_context_slot(); |
526 } | 526 } |
527 | 527 |
528 | 528 |
529 void FixedArray::FixedArrayPrint(std::ostream& os) { // NOLINT | 529 void FixedArray::FixedArrayPrint(std::ostream& os) { // NOLINT |
530 HeapObject::PrintHeader(os, "FixedArray"); | 530 HeapObject::PrintHeader(os, "FixedArray"); |
531 os << "\n - length: " << length(); | 531 os << " - length: " << length(); |
532 for (int i = 0; i < length(); i++) { | 532 for (int i = 0; i < length(); i++) { |
533 os << "\n [" << i << "]: " << Brief(get(i)); | 533 os << "\n [" << i << "]: " << Brief(get(i)); |
534 } | 534 } |
535 os << "\n"; | 535 os << "\n"; |
536 } | 536 } |
537 | 537 |
538 | 538 |
539 void FixedDoubleArray::FixedDoubleArrayPrint(std::ostream& os) { // NOLINT | 539 void FixedDoubleArray::FixedDoubleArrayPrint(std::ostream& os) { // NOLINT |
540 HeapObject::PrintHeader(os, "FixedDoubleArray"); | 540 HeapObject::PrintHeader(os, "FixedDoubleArray"); |
541 os << "\n - length: " << length(); | 541 os << " - length: " << length(); |
542 for (int i = 0; i < length(); i++) { | 542 for (int i = 0; i < length(); i++) { |
543 os << "\n [" << i << "]: "; | 543 os << "\n [" << i << "]: "; |
544 if (is_the_hole(i)) { | 544 if (is_the_hole(i)) { |
545 os << "<the hole>"; | 545 os << "<the hole>"; |
546 } else { | 546 } else { |
547 os << get_scalar(i); | 547 os << get_scalar(i); |
548 } | 548 } |
549 } | 549 } |
550 os << "\n"; | 550 os << "\n"; |
551 } | 551 } |
552 | 552 |
553 | 553 |
554 void TransitionArray::TransitionArrayPrint(std::ostream& os) { // NOLINT | 554 void TransitionArray::TransitionArrayPrint(std::ostream& os) { // NOLINT |
555 HeapObject::PrintHeader(os, "TransitionArray"); | 555 HeapObject::PrintHeader(os, "TransitionArray"); |
556 os << "\n - capacity: " << length(); | 556 os << " - capacity: " << length(); |
557 for (int i = 0; i < length(); i++) { | 557 for (int i = 0; i < length(); i++) { |
558 os << "\n [" << i << "]: " << Brief(get(i)); | 558 os << "\n [" << i << "]: " << Brief(get(i)); |
559 if (i == kNextLinkIndex) os << " (next link)"; | 559 if (i == kNextLinkIndex) os << " (next link)"; |
560 if (i == kPrototypeTransitionsIndex) os << " (prototype transitions)"; | 560 if (i == kPrototypeTransitionsIndex) os << " (prototype transitions)"; |
561 if (i == kTransitionLengthIndex) os << " (number of transitions)"; | 561 if (i == kTransitionLengthIndex) os << " (number of transitions)"; |
562 } | 562 } |
563 os << "\n"; | 563 os << "\n"; |
564 } | 564 } |
565 | 565 |
566 | 566 |
567 void TypeFeedbackMetadata::Print() { | 567 void TypeFeedbackMetadata::Print() { |
568 OFStream os(stdout); | 568 OFStream os(stdout); |
569 TypeFeedbackMetadataPrint(os); | 569 TypeFeedbackMetadataPrint(os); |
570 os << std::flush; | 570 os << std::flush; |
571 } | 571 } |
572 | 572 |
573 | 573 |
574 void TypeFeedbackMetadata::TypeFeedbackMetadataPrint( | 574 void TypeFeedbackMetadata::TypeFeedbackMetadataPrint( |
575 std::ostream& os) { // NOLINT | 575 std::ostream& os) { // NOLINT |
576 HeapObject::PrintHeader(os, "TypeFeedbackMetadata"); | 576 HeapObject::PrintHeader(os, "TypeFeedbackMetadata"); |
577 os << "\n - length: " << length(); | 577 os << " - length: " << length(); |
578 if (length() == 0) { | 578 if (length() == 0) { |
579 os << " (empty)\n"; | 579 os << " (empty)\n"; |
580 return; | 580 return; |
581 } | 581 } |
582 | 582 |
583 TypeFeedbackMetadataIterator iter(this); | 583 TypeFeedbackMetadataIterator iter(this); |
584 while (iter.HasNext()) { | 584 while (iter.HasNext()) { |
585 FeedbackVectorSlot slot = iter.Next(); | 585 FeedbackVectorSlot slot = iter.Next(); |
586 FeedbackVectorSlotKind kind = iter.kind(); | 586 FeedbackVectorSlotKind kind = iter.kind(); |
587 os << "\n Slot " << slot << " " << kind; | 587 os << "\n Slot " << slot << " " << kind; |
588 } | 588 } |
589 os << "\n"; | 589 os << "\n"; |
590 } | 590 } |
591 | 591 |
592 | 592 |
593 void TypeFeedbackVector::Print() { | 593 void TypeFeedbackVector::Print() { |
594 OFStream os(stdout); | 594 OFStream os(stdout); |
595 TypeFeedbackVectorPrint(os); | 595 TypeFeedbackVectorPrint(os); |
596 os << std::flush; | 596 os << std::flush; |
597 } | 597 } |
598 | 598 |
599 | 599 |
600 void TypeFeedbackVector::TypeFeedbackVectorPrint(std::ostream& os) { // NOLINT | 600 void TypeFeedbackVector::TypeFeedbackVectorPrint(std::ostream& os) { // NOLINT |
601 HeapObject::PrintHeader(os, "TypeFeedbackVector"); | 601 HeapObject::PrintHeader(os, "TypeFeedbackVector"); |
602 os << "\n - length: " << length(); | 602 os << " - length: " << length(); |
603 if (length() == 0) { | 603 if (length() == 0) { |
604 os << " (empty)\n"; | 604 os << " (empty)\n"; |
605 return; | 605 return; |
606 } | 606 } |
607 | 607 |
608 TypeFeedbackMetadataIterator iter(metadata()); | 608 TypeFeedbackMetadataIterator iter(metadata()); |
609 while (iter.HasNext()) { | 609 while (iter.HasNext()) { |
610 FeedbackVectorSlot slot = iter.Next(); | 610 FeedbackVectorSlot slot = iter.Next(); |
611 FeedbackVectorSlotKind kind = iter.kind(); | 611 FeedbackVectorSlotKind kind = iter.kind(); |
612 | 612 |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
735 min()->IsSmi() ? Smi::cast(min())->value() : -1, | 735 min()->IsSmi() ? Smi::cast(min())->value() : -1, |
736 sec()->IsSmi() ? Smi::cast(sec())->value() : -1); | 736 sec()->IsSmi() ? Smi::cast(sec())->value() : -1); |
737 os << buf.start(); | 737 os << buf.start(); |
738 } | 738 } |
739 JSObjectPrintBody(os, this); | 739 JSObjectPrintBody(os, this); |
740 } | 740 } |
741 | 741 |
742 | 742 |
743 void JSProxy::JSProxyPrint(std::ostream& os) { // NOLINT | 743 void JSProxy::JSProxyPrint(std::ostream& os) { // NOLINT |
744 HeapObject::PrintHeader(os, "JSProxy"); | 744 HeapObject::PrintHeader(os, "JSProxy"); |
745 os << "\n - map = " << reinterpret_cast<void*>(map()); | 745 os << " - map = " << reinterpret_cast<void*>(map()); |
746 os << "\n - target = "; | 746 os << "\n - target = "; |
747 target()->ShortPrint(os); | 747 target()->ShortPrint(os); |
748 os << "\n - handler = "; | 748 os << "\n - handler = "; |
749 handler()->ShortPrint(os); | 749 handler()->ShortPrint(os); |
750 os << "\n - hash = "; | 750 os << "\n - hash = "; |
751 hash()->ShortPrint(os); | 751 hash()->ShortPrint(os); |
752 os << "\n"; | 752 os << "\n"; |
753 } | 753 } |
754 | 754 |
755 | 755 |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
872 } | 872 } |
873 os << "\n - context = " << Brief(context()); | 873 os << "\n - context = " << Brief(context()); |
874 os << "\n - literals = " << Brief(literals()); | 874 os << "\n - literals = " << Brief(literals()); |
875 os << "\n - code = " << Brief(code()); | 875 os << "\n - code = " << Brief(code()); |
876 JSObjectPrintBody(os, this); | 876 JSObjectPrintBody(os, this); |
877 } | 877 } |
878 | 878 |
879 | 879 |
880 void SharedFunctionInfo::SharedFunctionInfoPrint(std::ostream& os) { // NOLINT | 880 void SharedFunctionInfo::SharedFunctionInfoPrint(std::ostream& os) { // NOLINT |
881 HeapObject::PrintHeader(os, "SharedFunctionInfo"); | 881 HeapObject::PrintHeader(os, "SharedFunctionInfo"); |
882 os << "\n - name: " << Brief(name()); | 882 os << " - name: " << Brief(name()); |
883 os << "\n - expected_nof_properties: " << expected_nof_properties(); | 883 os << "\n - expected_nof_properties: " << expected_nof_properties(); |
884 os << "\n - ast_node_count: " << ast_node_count(); | 884 os << "\n - ast_node_count: " << ast_node_count(); |
885 os << "\n - instance class name = "; | 885 os << "\n - instance class name = "; |
886 instance_class_name()->Print(os); | 886 instance_class_name()->Print(os); |
887 os << "\n - code = " << Brief(code()); | 887 os << "\n - code = " << Brief(code()); |
888 if (HasSourceCode()) { | 888 if (HasSourceCode()) { |
889 os << "\n - source code = "; | 889 os << "\n - source code = "; |
890 String* source = String::cast(Script::cast(script())->source()); | 890 String* source = String::cast(Script::cast(script())->source()); |
891 int start = start_position(); | 891 int start = start_position(); |
892 int length = end_position() - start; | 892 int length = end_position() - start; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
924 void JSGlobalObject::JSGlobalObjectPrint(std::ostream& os) { // NOLINT | 924 void JSGlobalObject::JSGlobalObjectPrint(std::ostream& os) { // NOLINT |
925 os << "global "; | 925 os << "global "; |
926 JSObjectPrint(os); | 926 JSObjectPrint(os); |
927 os << "native context : " << Brief(native_context()); | 927 os << "native context : " << Brief(native_context()); |
928 os << "\n"; | 928 os << "\n"; |
929 } | 929 } |
930 | 930 |
931 | 931 |
932 void Cell::CellPrint(std::ostream& os) { // NOLINT | 932 void Cell::CellPrint(std::ostream& os) { // NOLINT |
933 HeapObject::PrintHeader(os, "Cell"); | 933 HeapObject::PrintHeader(os, "Cell"); |
934 os << "\n - value: " << Brief(value()); | 934 os << " - value: " << Brief(value()); |
935 os << "\n"; | 935 os << "\n"; |
936 } | 936 } |
937 | 937 |
938 | 938 |
939 void PropertyCell::PropertyCellPrint(std::ostream& os) { // NOLINT | 939 void PropertyCell::PropertyCellPrint(std::ostream& os) { // NOLINT |
940 HeapObject::PrintHeader(os, "PropertyCell"); | 940 HeapObject::PrintHeader(os, "PropertyCell"); |
941 os << "\n - value: " << Brief(value()); | 941 os << " - value: " << Brief(value()); |
942 os << "\n - details: " << property_details(); | 942 os << "\n - details: " << property_details(); |
943 os << "\n"; | 943 os << "\n"; |
944 } | 944 } |
945 | 945 |
946 | 946 |
947 void WeakCell::WeakCellPrint(std::ostream& os) { // NOLINT | 947 void WeakCell::WeakCellPrint(std::ostream& os) { // NOLINT |
948 HeapObject::PrintHeader(os, "WeakCell"); | 948 HeapObject::PrintHeader(os, "WeakCell"); |
949 if (cleared()) { | 949 if (cleared()) { |
950 os << "\n - cleared"; | 950 os << "\n - cleared"; |
951 } else { | 951 } else { |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1043 os << "\n - data: " << Brief(data()); | 1043 os << "\n - data: " << Brief(data()); |
1044 os << "\n"; | 1044 os << "\n"; |
1045 } | 1045 } |
1046 | 1046 |
1047 | 1047 |
1048 void FunctionTemplateInfo::FunctionTemplateInfoPrint( | 1048 void FunctionTemplateInfo::FunctionTemplateInfoPrint( |
1049 std::ostream& os) { // NOLINT | 1049 std::ostream& os) { // NOLINT |
1050 HeapObject::PrintHeader(os, "FunctionTemplateInfo"); | 1050 HeapObject::PrintHeader(os, "FunctionTemplateInfo"); |
1051 os << "\n - class name: " << Brief(class_name()); | 1051 os << "\n - class name: " << Brief(class_name()); |
1052 os << "\n - tag: " << Brief(tag()); | 1052 os << "\n - tag: " << Brief(tag()); |
| 1053 os << "\n - property_list: " << Brief(property_list()); |
1053 os << "\n - serial_number: " << Brief(serial_number()); | 1054 os << "\n - serial_number: " << Brief(serial_number()); |
1054 os << "\n - property_list: " << Brief(property_list()); | |
1055 os << "\n - call_code: " << Brief(call_code()); | 1055 os << "\n - call_code: " << Brief(call_code()); |
1056 os << "\n - property_accessors: " << Brief(property_accessors()); | 1056 os << "\n - property_accessors: " << Brief(property_accessors()); |
1057 os << "\n - prototype_template: " << Brief(prototype_template()); | 1057 os << "\n - prototype_template: " << Brief(prototype_template()); |
1058 os << "\n - parent_template: " << Brief(parent_template()); | 1058 os << "\n - parent_template: " << Brief(parent_template()); |
1059 os << "\n - named_property_handler: " << Brief(named_property_handler()); | 1059 os << "\n - named_property_handler: " << Brief(named_property_handler()); |
1060 os << "\n - indexed_property_handler: " << Brief(indexed_property_handler()); | 1060 os << "\n - indexed_property_handler: " << Brief(indexed_property_handler()); |
1061 os << "\n - instance_template: " << Brief(instance_template()); | 1061 os << "\n - instance_template: " << Brief(instance_template()); |
1062 os << "\n - signature: " << Brief(signature()); | 1062 os << "\n - signature: " << Brief(signature()); |
1063 os << "\n - access_check_info: " << Brief(access_check_info()); | 1063 os << "\n - access_check_info: " << Brief(access_check_info()); |
1064 os << "\n - hidden_prototype: " << (hidden_prototype() ? "true" : "false"); | 1064 os << "\n - hidden_prototype: " << (hidden_prototype() ? "true" : "false"); |
1065 os << "\n - undetectable: " << (undetectable() ? "true" : "false"); | 1065 os << "\n - undetectable: " << (undetectable() ? "true" : "false"); |
1066 os << "\n - need_access_check: " << (needs_access_check() ? "true" : "false"); | 1066 os << "\n - need_access_check: " << (needs_access_check() ? "true" : "false"); |
1067 os << "\n - instantiated: " << (instantiated() ? "true" : "false"); | 1067 os << "\n - instantiated: " << (instantiated() ? "true" : "false"); |
1068 os << "\n"; | 1068 os << "\n"; |
1069 } | 1069 } |
1070 | 1070 |
1071 | 1071 |
1072 void ObjectTemplateInfo::ObjectTemplateInfoPrint(std::ostream& os) { // NOLINT | 1072 void ObjectTemplateInfo::ObjectTemplateInfoPrint(std::ostream& os) { // NOLINT |
1073 HeapObject::PrintHeader(os, "ObjectTemplateInfo"); | 1073 HeapObject::PrintHeader(os, "ObjectTemplateInfo"); |
1074 os << "\n - tag: " << Brief(tag()); | 1074 os << " - tag: " << Brief(tag()); |
1075 os << "\n - serial_number: " << Brief(serial_number()); | |
1076 os << "\n - property_list: " << Brief(property_list()); | 1075 os << "\n - property_list: " << Brief(property_list()); |
1077 os << "\n - property_accessors: " << Brief(property_accessors()); | 1076 os << "\n - property_accessors: " << Brief(property_accessors()); |
1078 os << "\n - constructor: " << Brief(constructor()); | 1077 os << "\n - constructor: " << Brief(constructor()); |
1079 os << "\n - internal_field_count: " << Brief(internal_field_count()); | 1078 os << "\n - internal_field_count: " << Brief(internal_field_count()); |
1080 os << "\n"; | 1079 os << "\n"; |
1081 } | 1080 } |
1082 | 1081 |
1083 | 1082 |
1084 void AllocationSite::AllocationSitePrint(std::ostream& os) { // NOLINT | 1083 void AllocationSite::AllocationSitePrint(std::ostream& os) { // NOLINT |
1085 HeapObject::PrintHeader(os, "AllocationSite"); | 1084 HeapObject::PrintHeader(os, "AllocationSite"); |
1086 os << "\n - weak_next: " << Brief(weak_next()); | 1085 os << " - weak_next: " << Brief(weak_next()); |
1087 os << "\n - dependent code: " << Brief(dependent_code()); | 1086 os << "\n - dependent code: " << Brief(dependent_code()); |
1088 os << "\n - nested site: " << Brief(nested_site()); | 1087 os << "\n - nested site: " << Brief(nested_site()); |
1089 os << "\n - memento found count: " | 1088 os << "\n - memento found count: " |
1090 << Brief(Smi::FromInt(memento_found_count())); | 1089 << Brief(Smi::FromInt(memento_found_count())); |
1091 os << "\n - memento create count: " | 1090 os << "\n - memento create count: " |
1092 << Brief(Smi::FromInt(memento_create_count())); | 1091 << Brief(Smi::FromInt(memento_create_count())); |
1093 os << "\n - pretenure decision: " | 1092 os << "\n - pretenure decision: " |
1094 << Brief(Smi::FromInt(pretenure_decision())); | 1093 << Brief(Smi::FromInt(pretenure_decision())); |
1095 os << "\n - transition_info: "; | 1094 os << "\n - transition_info: "; |
1096 if (transition_info()->IsSmi()) { | 1095 if (transition_info()->IsSmi()) { |
1097 ElementsKind kind = GetElementsKind(); | 1096 ElementsKind kind = GetElementsKind(); |
1098 os << "Array allocation with ElementsKind " << ElementsKindToString(kind); | 1097 os << "Array allocation with ElementsKind " << ElementsKindToString(kind); |
1099 } else if (transition_info()->IsJSArray()) { | 1098 } else if (transition_info()->IsJSArray()) { |
1100 os << "Array literal " << Brief(transition_info()); | 1099 os << "Array literal " << Brief(transition_info()); |
1101 } else { | 1100 } else { |
1102 os << "unknown transition_info" << Brief(transition_info()); | 1101 os << "unknown transition_info" << Brief(transition_info()); |
1103 } | 1102 } |
1104 os << "\n"; | 1103 os << "\n"; |
1105 } | 1104 } |
1106 | 1105 |
1107 | 1106 |
1108 void AllocationMemento::AllocationMementoPrint(std::ostream& os) { // NOLINT | 1107 void AllocationMemento::AllocationMementoPrint(std::ostream& os) { // NOLINT |
1109 HeapObject::PrintHeader(os, "AllocationMemento"); | 1108 HeapObject::PrintHeader(os, "AllocationMemento"); |
1110 os << "\n - allocation site: "; | 1109 os << " - allocation site: "; |
1111 if (IsValid()) { | 1110 if (IsValid()) { |
1112 GetAllocationSite()->Print(os); | 1111 GetAllocationSite()->Print(os); |
1113 } else { | 1112 } else { |
1114 os << "<invalid>\n"; | 1113 os << "<invalid>\n"; |
1115 } | 1114 } |
1116 } | 1115 } |
1117 | 1116 |
1118 | 1117 |
1119 void Script::ScriptPrint(std::ostream& os) { // NOLINT | 1118 void Script::ScriptPrint(std::ostream& os) { // NOLINT |
1120 HeapObject::PrintHeader(os, "Script"); | 1119 HeapObject::PrintHeader(os, "Script"); |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1327 void JSObject::PrintTransitions(std::ostream& os) { // NOLINT | 1326 void JSObject::PrintTransitions(std::ostream& os) { // NOLINT |
1328 Object* transitions = map()->raw_transitions(); | 1327 Object* transitions = map()->raw_transitions(); |
1329 int num_transitions = TransitionArray::NumberOfTransitions(transitions); | 1328 int num_transitions = TransitionArray::NumberOfTransitions(transitions); |
1330 if (num_transitions == 0) return; | 1329 if (num_transitions == 0) return; |
1331 os << "\n - transitions"; | 1330 os << "\n - transitions"; |
1332 TransitionArray::PrintTransitions(os, transitions, false); | 1331 TransitionArray::PrintTransitions(os, transitions, false); |
1333 } | 1332 } |
1334 #endif // defined(DEBUG) || defined(OBJECT_PRINT) | 1333 #endif // defined(DEBUG) || defined(OBJECT_PRINT) |
1335 } // namespace internal | 1334 } // namespace internal |
1336 } // namespace v8 | 1335 } // namespace v8 |
OLD | NEW |