OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 <iomanip> | 5 #include <iomanip> |
6 #include <sstream> | 6 #include <sstream> |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
(...skipping 11593 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11604 it.rinfo()->Print(GetIsolate(), os); | 11604 it.rinfo()->Print(GetIsolate(), os); |
11605 } | 11605 } |
11606 os << "\n"; | 11606 os << "\n"; |
11607 } | 11607 } |
11608 #endif // ENABLE_DISASSEMBLER | 11608 #endif // ENABLE_DISASSEMBLER |
11609 | 11609 |
11610 | 11610 |
11611 void BytecodeArray::Disassemble(std::ostream& os) { | 11611 void BytecodeArray::Disassemble(std::ostream& os) { |
11612 os << "Frame size " << frame_size() << "\n"; | 11612 os << "Frame size " << frame_size() << "\n"; |
11613 Vector<char> buf = Vector<char>::New(50); | 11613 Vector<char> buf = Vector<char>::New(50); |
11614 int bytes = 0; | 11614 |
11615 for (int i = 0; i < this->length(); i += bytes) { | 11615 const uint8_t* first_bytecode_address = GetFirstBytecodeAddress(); |
11616 interpreter::Bytecode bytecode = interpreter::Bytecodes::FromByte(get(i)); | 11616 int bytecode_size = 0; |
11617 bytes = interpreter::Bytecodes::Size(bytecode); | 11617 for (int i = 0; i < this->length(); i += bytecode_size) { |
11618 SNPrintF(buf, "%p : ", GetFirstBytecodeAddress() + i); | 11618 const uint8_t* bytecode_start = &first_bytecode_address[i]; |
11619 os << buf.start(); | 11619 interpreter::Bytecode bytecode = |
11620 for (int j = 0; j < bytes; j++) { | 11620 interpreter::Bytecodes::FromByte(bytecode_start[0]); |
11621 SNPrintF(buf, "%02x ", get(i + j)); | 11621 bytecode_size = interpreter::Bytecodes::Size(bytecode); |
11622 os << buf.start(); | 11622 |
11623 } | 11623 SNPrintF(buf, "%p", bytecode_start); |
11624 for (int j = bytes; j < interpreter::Bytecodes::MaximumSize(); j++) { | 11624 os << buf.start() << " : "; |
11625 os << " "; | 11625 interpreter::Bytecodes::Decode(os, bytecode_start); |
11626 } | |
11627 os << bytecode << " "; | |
11628 for (int j = 1; j < bytes; j++) { | |
11629 interpreter::OperandType op_type = | |
11630 interpreter::Bytecodes::GetOperandType(bytecode, j - 1); | |
11631 uint8_t operand = get(i + j); | |
11632 switch (op_type) { | |
11633 case interpreter::OperandType::kImm8: | |
11634 os << "#" << static_cast<int>(operand); | |
11635 break; | |
11636 case interpreter::OperandType::kReg: | |
11637 os << "r" << static_cast<int>(operand); | |
11638 break; | |
11639 case interpreter::OperandType::kNone: | |
11640 UNREACHABLE(); | |
11641 break; | |
11642 } | |
11643 if (j + 1 < bytes) { | |
11644 os << ", "; | |
11645 } | |
11646 } | |
11647 os << "\n"; | 11626 os << "\n"; |
11648 } | 11627 } |
11649 } | 11628 } |
11650 | 11629 |
11651 | 11630 |
11652 // static | 11631 // static |
11653 void JSArray::Initialize(Handle<JSArray> array, int capacity, int length) { | 11632 void JSArray::Initialize(Handle<JSArray> array, int capacity, int length) { |
11654 DCHECK(capacity >= 0); | 11633 DCHECK(capacity >= 0); |
11655 array->GetIsolate()->factory()->NewJSArrayStorage( | 11634 array->GetIsolate()->factory()->NewJSArrayStorage( |
11656 array, length, capacity, INITIALIZE_ARRAY_ELEMENTS_WITH_HOLE); | 11635 array, length, capacity, INITIALIZE_ARRAY_ELEMENTS_WITH_HOLE); |
(...skipping 4134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15791 if (cell->value() != *new_value) { | 15770 if (cell->value() != *new_value) { |
15792 cell->set_value(*new_value); | 15771 cell->set_value(*new_value); |
15793 Isolate* isolate = cell->GetIsolate(); | 15772 Isolate* isolate = cell->GetIsolate(); |
15794 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 15773 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
15795 isolate, DependentCode::kPropertyCellChangedGroup); | 15774 isolate, DependentCode::kPropertyCellChangedGroup); |
15796 } | 15775 } |
15797 } | 15776 } |
15798 | 15777 |
15799 } // namespace internal | 15778 } // namespace internal |
15800 } // namespace v8 | 15779 } // namespace v8 |
OLD | NEW |