OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 <cmath> | 7 #include <cmath> |
8 #include <iomanip> | 8 #include <iomanip> |
9 #include <memory> | 9 #include <memory> |
10 #include <sstream> | 10 #include <sstream> |
(...skipping 14729 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14740 os << static_cast<const void*>(ptr) << " " << buf.start() << "\n"; | 14740 os << static_cast<const void*>(ptr) << " " << buf.start() << "\n"; |
14741 } | 14741 } |
14742 } | 14742 } |
14743 } | 14743 } |
14744 os << "\n"; | 14744 os << "\n"; |
14745 | 14745 |
14746 SourcePositionTableIterator it(source_position_table()); | 14746 SourcePositionTableIterator it(source_position_table()); |
14747 if (!it.done()) { | 14747 if (!it.done()) { |
14748 os << "Source positions:\n pc offset position\n"; | 14748 os << "Source positions:\n pc offset position\n"; |
14749 for (; !it.done(); it.Advance()) { | 14749 for (; !it.done(); it.Advance()) { |
14750 os << std::setw(10) << it.code_offset() << std::setw(10) | 14750 os << std::setw(10) << std::hex << it.code_offset() << std::dec |
14751 << it.source_position().ScriptOffset() | 14751 << std::setw(10) << it.source_position().ScriptOffset() |
14752 << (it.is_statement() ? " statement" : "") << "\n"; | 14752 << (it.is_statement() ? " statement" : "") << "\n"; |
14753 } | 14753 } |
14754 os << "\n"; | 14754 os << "\n"; |
14755 } | 14755 } |
14756 | 14756 |
14757 if (kind() == FUNCTION) { | 14757 if (kind() == FUNCTION) { |
14758 DeoptimizationOutputData* data = | 14758 DeoptimizationOutputData* data = |
14759 DeoptimizationOutputData::cast(this->deoptimization_data()); | 14759 DeoptimizationOutputData::cast(this->deoptimization_data()); |
14760 data->DeoptimizationOutputDataPrint(os); | 14760 data->DeoptimizationOutputDataPrint(os); |
14761 } else if (kind() == OPTIMIZED_FUNCTION) { | 14761 } else if (kind() == OPTIMIZED_FUNCTION) { |
14762 DeoptimizationInputData* data = | 14762 DeoptimizationInputData* data = |
14763 DeoptimizationInputData::cast(this->deoptimization_data()); | 14763 DeoptimizationInputData::cast(this->deoptimization_data()); |
14764 data->DeoptimizationInputDataPrint(os); | 14764 data->DeoptimizationInputDataPrint(os); |
14765 } | 14765 } |
14766 os << "\n"; | 14766 os << "\n"; |
14767 | 14767 |
14768 if (is_crankshafted()) { | 14768 if (is_crankshafted()) { |
14769 SafepointTable table(this); | 14769 SafepointTable table(this); |
14770 os << "Safepoints (size = " << table.size() << ")\n"; | 14770 os << "Safepoints (size = " << table.size() << ")\n"; |
14771 for (unsigned i = 0; i < table.length(); i++) { | 14771 for (unsigned i = 0; i < table.length(); i++) { |
14772 unsigned pc_offset = table.GetPcOffset(i); | 14772 unsigned pc_offset = table.GetPcOffset(i); |
14773 os << static_cast<const void*>(instruction_start() + pc_offset) << " "; | 14773 os << static_cast<const void*>(instruction_start() + pc_offset) << " "; |
14774 os << std::setw(4) << pc_offset << " "; | 14774 os << std::setw(4) << std::hex << pc_offset << std::dec << " "; |
14775 table.PrintEntry(i, os); | 14775 table.PrintEntry(i, os); |
14776 os << " (sp -> fp) "; | 14776 os << " (sp -> fp) "; |
14777 SafepointEntry entry = table.GetEntry(i); | 14777 SafepointEntry entry = table.GetEntry(i); |
14778 if (entry.deoptimization_index() != Safepoint::kNoDeoptimizationIndex) { | 14778 if (entry.deoptimization_index() != Safepoint::kNoDeoptimizationIndex) { |
14779 os << std::setw(6) << entry.deoptimization_index(); | 14779 os << std::setw(6) << entry.deoptimization_index(); |
14780 } else { | 14780 } else { |
14781 os << "<none>"; | 14781 os << "<none>"; |
14782 } | 14782 } |
14783 if (entry.argument_count() > 0) { | 14783 if (entry.argument_count() > 0) { |
14784 os << " argc: " << entry.argument_count(); | 14784 os << " argc: " << entry.argument_count(); |
14785 } | 14785 } |
14786 os << "\n"; | 14786 os << "\n"; |
14787 } | 14787 } |
14788 os << "\n"; | 14788 os << "\n"; |
14789 } else if (kind() == FUNCTION) { | 14789 } else if (kind() == FUNCTION) { |
14790 unsigned offset = back_edge_table_offset(); | 14790 unsigned offset = back_edge_table_offset(); |
14791 // If there is no back edge table, the "table start" will be at or after | 14791 // If there is no back edge table, the "table start" will be at or after |
14792 // (due to alignment) the end of the instruction stream. | 14792 // (due to alignment) the end of the instruction stream. |
14793 if (static_cast<int>(offset) < instruction_size()) { | 14793 if (static_cast<int>(offset) < instruction_size()) { |
14794 DisallowHeapAllocation no_gc; | 14794 DisallowHeapAllocation no_gc; |
14795 BackEdgeTable back_edges(this, &no_gc); | 14795 BackEdgeTable back_edges(this, &no_gc); |
14796 | 14796 |
14797 os << "Back edges (size = " << back_edges.length() << ")\n"; | 14797 os << "Back edges (size = " << back_edges.length() << ")\n"; |
14798 os << "ast_id pc_offset loop_depth\n"; | 14798 os << "ast_id pc_offset loop_depth\n"; |
14799 | 14799 |
14800 for (uint32_t i = 0; i < back_edges.length(); i++) { | 14800 for (uint32_t i = 0; i < back_edges.length(); i++) { |
14801 os << std::setw(6) << back_edges.ast_id(i).ToInt() << " " | 14801 os << std::setw(6) << back_edges.ast_id(i).ToInt() << " " |
14802 << std::setw(9) << back_edges.pc_offset(i) << " " << std::setw(10) | 14802 << std::setw(9) << std::hex << back_edges.pc_offset(i) << std::dec |
14803 << back_edges.loop_depth(i) << "\n"; | 14803 << " " << std::setw(10) << back_edges.loop_depth(i) << "\n"; |
14804 } | 14804 } |
14805 | 14805 |
14806 os << "\n"; | 14806 os << "\n"; |
14807 } | 14807 } |
14808 #ifdef OBJECT_PRINT | 14808 #ifdef OBJECT_PRINT |
14809 if (!type_feedback_info()->IsUndefined(GetIsolate())) { | 14809 if (!type_feedback_info()->IsUndefined(GetIsolate())) { |
14810 TypeFeedbackInfo::cast(type_feedback_info())->TypeFeedbackInfoPrint(os); | 14810 TypeFeedbackInfo::cast(type_feedback_info())->TypeFeedbackInfoPrint(os); |
14811 os << "\n"; | 14811 os << "\n"; |
14812 } | 14812 } |
14813 #endif | 14813 #endif |
(...skipping 5580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
20394 // depend on this. | 20394 // depend on this. |
20395 return DICTIONARY_ELEMENTS; | 20395 return DICTIONARY_ELEMENTS; |
20396 } | 20396 } |
20397 DCHECK_LE(kind, LAST_ELEMENTS_KIND); | 20397 DCHECK_LE(kind, LAST_ELEMENTS_KIND); |
20398 return kind; | 20398 return kind; |
20399 } | 20399 } |
20400 } | 20400 } |
20401 | 20401 |
20402 } // namespace internal | 20402 } // namespace internal |
20403 } // namespace v8 | 20403 } // namespace v8 |
OLD | NEW |