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) |
<< "]"; |