Chromium Code Reviews| 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 <sstream> | 9 #include <sstream> |
| 10 | 10 |
| (...skipping 14959 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 14970 } | 14970 } |
| 14971 } | 14971 } |
| 14972 iterator.Advance(); | 14972 iterator.Advance(); |
| 14973 } | 14973 } |
| 14974 return statement_position; | 14974 return statement_position; |
| 14975 } | 14975 } |
| 14976 | 14976 |
| 14977 void BytecodeArray::Disassemble(std::ostream& os) { | 14977 void BytecodeArray::Disassemble(std::ostream& os) { |
| 14978 os << "Parameter count " << parameter_count() << "\n"; | 14978 os << "Parameter count " << parameter_count() << "\n"; |
| 14979 os << "Frame size " << frame_size() << "\n"; | 14979 os << "Frame size " << frame_size() << "\n"; |
| 14980 Vector<char> buf = Vector<char>::New(50); | |
| 14981 | 14980 |
| 14982 const uint8_t* base_address = GetFirstBytecodeAddress(); | 14981 const uint8_t* base_address = GetFirstBytecodeAddress(); |
| 14983 interpreter::SourcePositionTableIterator source_positions( | 14982 interpreter::SourcePositionTableIterator source_positions( |
| 14984 source_position_table()); | 14983 source_position_table()); |
| 14985 interpreter::BytecodeArrayIterator iterator(handle(this)); | 14984 interpreter::BytecodeArrayIterator iterator(handle(this)); |
| 14986 while (!iterator.done()) { | 14985 while (!iterator.done()) { |
| 14987 if (!source_positions.done() && | 14986 if (!source_positions.done() && |
| 14988 iterator.current_offset() == source_positions.bytecode_offset()) { | 14987 iterator.current_offset() == source_positions.bytecode_offset()) { |
| 14989 os << std::setw(5) << source_positions.source_position(); | 14988 os << std::setw(5) << source_positions.source_position(); |
| 14990 os << (source_positions.is_statement() ? " S> " : " E> "); | 14989 os << (source_positions.is_statement() ? " S> " : " E> "); |
| 14991 source_positions.Advance(); | 14990 source_positions.Advance(); |
| 14992 } else { | 14991 } else { |
| 14993 os << " "; | 14992 os << " "; |
| 14994 } | 14993 } |
| 14995 const uint8_t* current_address = base_address + iterator.current_offset(); | 14994 const uint8_t* current_address = base_address + iterator.current_offset(); |
| 14996 SNPrintF(buf, "%p", current_address); | 14995 os << reinterpret_cast<const void*>(current_address) << " " << std::setw(4) |
| 14997 os << buf.start() << " : "; | 14996 << iterator.current_offset() << " : "; |
|
rmcilroy
2016/03/17 11:29:37
It's difficult to tell what this looks like when r
Michael Starzinger
2016/03/17 11:51:14
I went with this formatting because it is the same
rmcilroy
2016/03/17 13:17:08
@ symbols sound good to me, let's go with that.
Michael Starzinger
2016/04/08 13:49:29
Done.
| |
| 14998 interpreter::Bytecodes::Decode(os, current_address, parameter_count()); | 14997 interpreter::Bytecodes::Decode(os, current_address, parameter_count()); |
| 14999 if (interpreter::Bytecodes::IsJump(iterator.current_bytecode())) { | 14998 if (interpreter::Bytecodes::IsJump(iterator.current_bytecode())) { |
| 15000 SNPrintF(buf, " (%p)", base_address + iterator.GetJumpTargetOffset()); | 14999 const void* jump_target = base_address + iterator.GetJumpTargetOffset(); |
| 15001 os << buf.start(); | 15000 os << " (" << jump_target << " / " << iterator.GetJumpTargetOffset() |
| 15001 << ")"; | |
| 15002 } | 15002 } |
| 15003 os << std::endl; | 15003 os << std::endl; |
| 15004 iterator.Advance(); | 15004 iterator.Advance(); |
| 15005 } | 15005 } |
| 15006 | 15006 |
| 15007 if (constant_pool()->length() > 0) { | 15007 if (constant_pool()->length() > 0) { |
| 15008 os << "Constant pool (size = " << constant_pool()->length() << ")\n"; | 15008 os << "Constant pool (size = " << constant_pool()->length() << ")\n"; |
| 15009 constant_pool()->Print(); | 15009 constant_pool()->Print(); |
| 15010 } | 15010 } |
| 15011 | 15011 |
| (...skipping 4716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 19728 if (cell->value() != *new_value) { | 19728 if (cell->value() != *new_value) { |
| 19729 cell->set_value(*new_value); | 19729 cell->set_value(*new_value); |
| 19730 Isolate* isolate = cell->GetIsolate(); | 19730 Isolate* isolate = cell->GetIsolate(); |
| 19731 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 19731 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
| 19732 isolate, DependentCode::kPropertyCellChangedGroup); | 19732 isolate, DependentCode::kPropertyCellChangedGroup); |
| 19733 } | 19733 } |
| 19734 } | 19734 } |
| 19735 | 19735 |
| 19736 } // namespace internal | 19736 } // namespace internal |
| 19737 } // namespace v8 | 19737 } // namespace v8 |
| OLD | NEW |