Chromium Code Reviews| Index: src/interpreter/bytecodes.cc |
| diff --git a/src/interpreter/bytecodes.cc b/src/interpreter/bytecodes.cc |
| index 986e3d012e6c5a4cc34ae543eeac0db6276fb2d0..93085111ab12989f28b49008f7254ae02d534a80 100644 |
| --- a/src/interpreter/bytecodes.cc |
| +++ b/src/interpreter/bytecodes.cc |
| @@ -273,6 +273,12 @@ std::ostream& Bytecodes::Decode(std::ostream& os, const uint8_t* bytecode_start, |
| } |
| break; |
| } |
| + case interpreter::OperandType::kReg16: { |
| + Register reg = |
| + Register::FromWideOperand(ReadUnalignedUInt16(operand_start)); |
| + os << "r" << reg.index(); |
|
rmcilroy
2016/01/04 11:54:54
nit - add "a" argument case as well ?
oth
2016/01/04 14:01:42
Okay, done, was not done as not part of current ch
|
| + break; |
| + } |
| case interpreter::OperandType::kNone: |
| UNREACHABLE(); |
| break; |
| @@ -364,7 +370,11 @@ bool Register::is_new_target() const { |
| int Register::MaxParameterIndex() { return kMaxParameterIndex; } |
| -uint8_t Register::ToOperand() const { return static_cast<uint8_t>(-index_); } |
| +uint8_t Register::ToOperand() const { |
| + DCHECK_GE(index_, kMinRegisterIndex); |
| + DCHECK_LE(index_, kMaxRegisterIndex); |
| + return static_cast<uint8_t>(-index_); |
| +} |
| Register Register::FromOperand(uint8_t operand) { |
| @@ -372,6 +382,18 @@ Register Register::FromOperand(uint8_t operand) { |
| } |
| +uint16_t Register::ToWideOperand() const { |
| + DCHECK_GE(index_, kMinInt16); |
| + DCHECK_LE(index_, kMaxInt16); |
| + return static_cast<uint16_t>(-index_); |
| +} |
| + |
| + |
| +Register Register::FromWideOperand(uint16_t operand) { |
| + return Register(-static_cast<int16_t>(operand)); |
| +} |
| + |
| + |
| bool Register::AreContiguous(Register reg1, Register reg2, Register reg3, |
| Register reg4, Register reg5) { |
| if (reg1.index() + 1 != reg2.index()) { |