| Index: src/interpreter/bytecode-decoder.cc
|
| diff --git a/src/interpreter/bytecode-decoder.cc b/src/interpreter/bytecode-decoder.cc
|
| deleted file mode 100644
|
| index 74c5806ef5e9257a3eeb68eac8e0e128ee20bc0d..0000000000000000000000000000000000000000
|
| --- a/src/interpreter/bytecode-decoder.cc
|
| +++ /dev/null
|
| @@ -1,157 +0,0 @@
|
| -// Copyright 2015 the V8 project authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "src/interpreter/bytecode-decoder.h"
|
| -
|
| -#include <iomanip>
|
| -
|
| -#include "src/utils.h"
|
| -
|
| -namespace v8 {
|
| -namespace internal {
|
| -namespace interpreter {
|
| -
|
| -// static
|
| -Register BytecodeDecoder::DecodeRegisterOperand(const uint8_t* operand_start,
|
| - OperandType operand_type,
|
| - OperandScale operand_scale) {
|
| - DCHECK(Bytecodes::IsRegisterOperandType(operand_type));
|
| - int32_t operand =
|
| - DecodeSignedOperand(operand_start, operand_type, operand_scale);
|
| - return Register::FromOperand(operand);
|
| -}
|
| -
|
| -// static
|
| -int32_t BytecodeDecoder::DecodeSignedOperand(const uint8_t* operand_start,
|
| - OperandType operand_type,
|
| - OperandScale operand_scale) {
|
| - DCHECK(!Bytecodes::IsUnsignedOperandType(operand_type));
|
| - switch (Bytecodes::SizeOfOperand(operand_type, operand_scale)) {
|
| - case OperandSize::kByte:
|
| - return static_cast<int8_t>(*operand_start);
|
| - case OperandSize::kShort:
|
| - return static_cast<int16_t>(ReadUnalignedUInt16(operand_start));
|
| - case OperandSize::kQuad:
|
| - return static_cast<int32_t>(ReadUnalignedUInt32(operand_start));
|
| - case OperandSize::kNone:
|
| - UNREACHABLE();
|
| - }
|
| - return 0;
|
| -}
|
| -
|
| -// static
|
| -uint32_t BytecodeDecoder::DecodeUnsignedOperand(const uint8_t* operand_start,
|
| - OperandType operand_type,
|
| - OperandScale operand_scale) {
|
| - DCHECK(Bytecodes::IsUnsignedOperandType(operand_type));
|
| - switch (Bytecodes::SizeOfOperand(operand_type, operand_scale)) {
|
| - case OperandSize::kByte:
|
| - return *operand_start;
|
| - case OperandSize::kShort:
|
| - return ReadUnalignedUInt16(operand_start);
|
| - case OperandSize::kQuad:
|
| - return ReadUnalignedUInt32(operand_start);
|
| - case OperandSize::kNone:
|
| - UNREACHABLE();
|
| - }
|
| - return 0;
|
| -}
|
| -
|
| -// static
|
| -std::ostream& BytecodeDecoder::Decode(std::ostream& os,
|
| - const uint8_t* bytecode_start,
|
| - int parameter_count) {
|
| - Bytecode bytecode = Bytecodes::FromByte(bytecode_start[0]);
|
| - int prefix_offset = 0;
|
| - OperandScale operand_scale = OperandScale::kSingle;
|
| - if (Bytecodes::IsPrefixScalingBytecode(bytecode)) {
|
| - prefix_offset = 1;
|
| - operand_scale = Bytecodes::PrefixBytecodeToOperandScale(bytecode);
|
| - bytecode = Bytecodes::FromByte(bytecode_start[1]);
|
| - }
|
| -
|
| - // Prepare to print bytecode and operands as hex digits.
|
| - std::ios saved_format(nullptr);
|
| - saved_format.copyfmt(saved_format);
|
| - os.fill('0');
|
| - os.flags(std::ios::hex);
|
| -
|
| - int bytecode_size = Bytecodes::Size(bytecode, operand_scale);
|
| - for (int i = 0; i < prefix_offset + bytecode_size; i++) {
|
| - os << std::setw(2) << static_cast<uint32_t>(bytecode_start[i]) << ' ';
|
| - }
|
| - os.copyfmt(saved_format);
|
| -
|
| - const int kBytecodeColumnSize = 6;
|
| - for (int i = prefix_offset + bytecode_size; i < kBytecodeColumnSize; i++) {
|
| - os << " ";
|
| - }
|
| -
|
| - os << Bytecodes::ToString(bytecode, operand_scale) << " ";
|
| -
|
| - // Operands for the debug break are from the original instruction.
|
| - if (Bytecodes::IsDebugBreak(bytecode)) return os;
|
| -
|
| - int number_of_operands = Bytecodes::NumberOfOperands(bytecode);
|
| - int range = 0;
|
| - for (int i = 0; i < number_of_operands; i++) {
|
| - OperandType op_type = Bytecodes::GetOperandType(bytecode, i);
|
| - int operand_offset =
|
| - Bytecodes::GetOperandOffset(bytecode, i, operand_scale);
|
| - const uint8_t* operand_start =
|
| - &bytecode_start[prefix_offset + operand_offset];
|
| - switch (op_type) {
|
| - case interpreter::OperandType::kRegCount:
|
| - os << "#"
|
| - << DecodeUnsignedOperand(operand_start, op_type, operand_scale);
|
| - break;
|
| - case interpreter::OperandType::kIdx:
|
| - case interpreter::OperandType::kRuntimeId:
|
| - case interpreter::OperandType::kIntrinsicId:
|
| - os << "["
|
| - << DecodeUnsignedOperand(operand_start, op_type, operand_scale)
|
| - << "]";
|
| - break;
|
| - case interpreter::OperandType::kImm:
|
| - os << "[" << DecodeSignedOperand(operand_start, op_type, operand_scale)
|
| - << "]";
|
| - break;
|
| - case interpreter::OperandType::kFlag8:
|
| - os << "#"
|
| - << DecodeUnsignedOperand(operand_start, op_type, operand_scale);
|
| - break;
|
| - case interpreter::OperandType::kMaybeReg:
|
| - case interpreter::OperandType::kReg:
|
| - case interpreter::OperandType::kRegOut: {
|
| - Register reg =
|
| - DecodeRegisterOperand(operand_start, op_type, operand_scale);
|
| - os << reg.ToString(parameter_count);
|
| - break;
|
| - }
|
| - case interpreter::OperandType::kRegOutTriple:
|
| - range += 1;
|
| - case interpreter::OperandType::kRegOutPair:
|
| - case interpreter::OperandType::kRegPair: {
|
| - range += 1;
|
| - Register first_reg =
|
| - DecodeRegisterOperand(operand_start, op_type, operand_scale);
|
| - Register last_reg = Register(first_reg.index() + range);
|
| - os << first_reg.ToString(parameter_count) << "-"
|
| - << last_reg.ToString(parameter_count);
|
| - break;
|
| - }
|
| - case interpreter::OperandType::kNone:
|
| - UNREACHABLE();
|
| - break;
|
| - }
|
| - if (i != number_of_operands - 1) {
|
| - os << ", ";
|
| - }
|
| - }
|
| - return os;
|
| -}
|
| -
|
| -} // namespace interpreter
|
| -} // namespace internal
|
| -} // namespace v8
|
|
|