| Index: src/interpreter/bytecodes.cc
|
| diff --git a/src/interpreter/bytecodes.cc b/src/interpreter/bytecodes.cc
|
| index 54763c1876d823791d523a2d2cde7bae5099eb3c..c17e95878adb6734577db6716db56b12376cc08b 100644
|
| --- a/src/interpreter/bytecodes.cc
|
| +++ b/src/interpreter/bytecodes.cc
|
| @@ -380,22 +380,7 @@ std::ostream& Bytecodes::Decode(std::ostream& os, const uint8_t* bytecode_start,
|
| case interpreter::OperandType::kRegOut8:
|
| case interpreter::OperandType::kRegOut16: {
|
| Register reg = DecodeRegister(operand_start, op_type);
|
| - if (reg.is_current_context()) {
|
| - os << "<context>";
|
| - } else if (reg.is_function_closure()) {
|
| - os << "<closure>";
|
| - } else if (reg.is_new_target()) {
|
| - os << "<new.target>";
|
| - } else if (reg.is_parameter()) {
|
| - int parameter_index = reg.ToParameterIndex(parameter_count);
|
| - if (parameter_index == 0) {
|
| - os << "<this>";
|
| - } else {
|
| - os << "a" << parameter_index - 1;
|
| - }
|
| - } else {
|
| - os << "r" << reg.index();
|
| - }
|
| + os << reg.ToString(parameter_count);
|
| break;
|
| }
|
| case interpreter::OperandType::kRegOutTriple8:
|
| @@ -406,14 +391,10 @@ std::ostream& Bytecodes::Decode(std::ostream& os, const uint8_t* bytecode_start,
|
| case interpreter::OperandType::kRegPair8:
|
| case interpreter::OperandType::kRegPair16: {
|
| range += 1;
|
| - Register reg = DecodeRegister(operand_start, op_type);
|
| - if (reg.is_parameter()) {
|
| - int parameter_index = reg.ToParameterIndex(parameter_count);
|
| - DCHECK_GT(parameter_index, 0);
|
| - os << "a" << parameter_index - range << "-" << parameter_index;
|
| - } else {
|
| - os << "r" << reg.index() << "-" << reg.index() + range;
|
| - }
|
| + Register first_reg = DecodeRegister(operand_start, op_type);
|
| + Register last_reg = Register(first_reg.index() + range);
|
| + os << first_reg.ToString(parameter_count) << "-"
|
| + << last_reg.ToString(parameter_count);
|
| break;
|
| }
|
| case interpreter::OperandType::kNone:
|
| @@ -427,7 +408,6 @@ std::ostream& Bytecodes::Decode(std::ostream& os, const uint8_t* bytecode_start,
|
| return os;
|
| }
|
|
|
| -
|
| std::ostream& operator<<(std::ostream& os, const Bytecode& bytecode) {
|
| return os << Bytecodes::ToString(bytecode);
|
| }
|
| @@ -442,7 +422,6 @@ std::ostream& operator<<(std::ostream& os, const OperandSize& operand_size) {
|
| return os << Bytecodes::OperandSizeToString(operand_size);
|
| }
|
|
|
| -
|
| static const int kLastParamRegisterIndex =
|
| -InterpreterFrameConstants::kLastParamFromRegisterPointer / kPointerSize;
|
| static const int kFunctionClosureRegisterIndex =
|
| @@ -569,6 +548,29 @@ bool Register::AreContiguous(Register reg1, Register reg2, Register reg3,
|
| return true;
|
| }
|
|
|
| +std::string Register::ToString(int parameter_count) {
|
| + if (is_current_context()) {
|
| + return std::string("<context>");
|
| + } else if (is_function_closure()) {
|
| + return std::string("<closure>");
|
| + } else if (is_new_target()) {
|
| + return std::string("<new.target>");
|
| + } else if (is_parameter()) {
|
| + int parameter_index = ToParameterIndex(parameter_count);
|
| + if (parameter_index == 0) {
|
| + return std::string("<this>");
|
| + } else {
|
| + std::ostringstream s;
|
| + s << "a" << parameter_index - 1;
|
| + return s.str();
|
| + }
|
| + } else {
|
| + std::ostringstream s;
|
| + s << "r" << index();
|
| + return s.str();
|
| + }
|
| +}
|
| +
|
| } // namespace interpreter
|
| } // namespace internal
|
| } // namespace v8
|
|
|