96 const uint8_t* bytecode_start,
99 int prefix_offset = 0;
109 std::ios saved_format(
nullptr);
110 saved_format.copyfmt(saved_format);
112 os.flags(std::ios::hex);
115 for (
int i = 0;
i < prefix_offset + bytecode_size;
i++) {
116 os << std::setw(2) << static_cast<uint32_t>(bytecode_start[
i]) <<
' ';
118 os.copyfmt(saved_format);
120 const int kBytecodeColumnSize = 6;
121 for (
int i = prefix_offset + bytecode_size;
i < kBytecodeColumnSize;
i++) {
132 if (number_of_operands > 0) os <<
" ";
133 for (
int i = 0;
i < number_of_operands;
i++) {
138 &bytecode_start[prefix_offset + operand_offset]);
140 case interpreter::OperandType::kIdx:
141 case interpreter::OperandType::kUImm:
146 case interpreter::OperandType::kIntrinsicId: {
152 case interpreter::OperandType::kNativeContextIndex: {
154 os <<
"[" << NameForNativeContextIndex(
id) <<
"]";
157 case interpreter::OperandType::kRuntimeId:
163 case interpreter::OperandType::kImm:
167 case interpreter::OperandType::kFlag8:
168 case interpreter::OperandType::kFlag16:
172 case interpreter::OperandType::kReg:
173 case interpreter::OperandType::kRegOut:
174 case interpreter::OperandType::kRegInOut: {
177 os <<
reg.ToString();
180 case interpreter::OperandType::kRegOutTriple: {
187 case interpreter::OperandType::kRegOutPair:
188 case interpreter::OperandType::kRegPair: {
195 case interpreter::OperandType::kRegOutList:
196 case interpreter::OperandType::kRegList: {
199 OperandType::kRegCount);
200 int reg_count_offset =
203 &bytecode_start[prefix_offset + reg_count_offset]);
205 reg_count_operand, OperandType::kRegCount, operand_scale);
207 operand_start,
count, op_type, operand_scale);
213 case interpreter::OperandType::kNone:
214 case interpreter::OperandType::kRegCount:
217 if (
i != number_of_operands - 1) {
#define NATIVE_CONTEXT_FIELDS(V)