Chromium Code Reviews| Index: src/interpreter/bytecode-decoder.cc |
| diff --git a/src/interpreter/bytecode-decoder.cc b/src/interpreter/bytecode-decoder.cc |
| index 49751897ee8a46608829be148fdb2ae153b4835a..bd68bdde2a5e26bc2595cda4b3700c20b130a23e 100644 |
| --- a/src/interpreter/bytecode-decoder.cc |
| +++ b/src/interpreter/bytecode-decoder.cc |
| @@ -6,7 +6,7 @@ |
| #include <iomanip> |
| -#include "src/utils.h" |
| +#include "src/interpreter/interpreter-intrinsics.h" |
| namespace v8 { |
| namespace internal { |
| @@ -67,6 +67,36 @@ uint32_t BytecodeDecoder::DecodeUnsignedOperand(const uint8_t* operand_start, |
| return 0; |
| } |
| +namespace { |
| +const char* NameForIntrinsicId(uint32_t idx) { |
| + switch (static_cast<IntrinsicsHelper::IntrinsicId>(idx)) { |
| +#define CASE(name, nargs, ressize) \ |
| + case IntrinsicsHelper::IntrinsicId::k##name: \ |
| + return #name; |
| + INTRINSICS_LIST(CASE) |
| +#undef CASE |
| + default: |
| + UNREACHABLE(); |
| + return nullptr; |
| + } |
| +} |
| + |
| +const char* NameForRuntimeId(uint32_t idx) { |
| + switch (idx) { |
| +#define CASE(name, nargs, ressize) \ |
| + case Runtime::k##name: \ |
| + return #name; \ |
| + case Runtime::kInline##name: \ |
| + return #name; |
| + FOR_EACH_INTRINSIC(CASE) |
| +#undef CASE |
| + default: |
| + UNREACHABLE(); |
| + return nullptr; |
| + } |
| +} |
| +} // anonymous namespace |
| + |
| // static |
| std::ostream& BytecodeDecoder::Decode(std::ostream& os, |
| const uint8_t* bytecode_start, |
| @@ -112,12 +142,20 @@ std::ostream& BytecodeDecoder::Decode(std::ostream& os, |
| switch (op_type) { |
| case interpreter::OperandType::kIdx: |
| case interpreter::OperandType::kUImm: |
| - case interpreter::OperandType::kRuntimeId: |
| - case interpreter::OperandType::kIntrinsicId: |
| os << "[" |
| << DecodeUnsignedOperand(operand_start, op_type, operand_scale) |
| << "]"; |
| break; |
| + case interpreter::OperandType::kIntrinsicId: |
| + os << "[" << NameForIntrinsicId(DecodeUnsignedOperand( |
|
rmcilroy
2017/02/23 13:47:13
nit - could you just do NameForRuntimeId(Intrinsic
neis
2017/02/23 14:02:55
Done.
|
| + operand_start, op_type, operand_scale)) |
| + << "]"; |
| + break; |
| + case interpreter::OperandType::kRuntimeId: |
| + os << "[" << NameForRuntimeId(DecodeUnsignedOperand( |
| + operand_start, op_type, operand_scale)) |
| + << "]"; |
| + break; |
| case interpreter::OperandType::kImm: |
| os << "[" << DecodeSignedOperand(operand_start, op_type, operand_scale) |
| << "]"; |