Same as `Interpreter::run`, except for extended opcodes.
(
state: &mut MachineState,
pc: UnsafeBytecodeStream,
pc_ref: ExecutingPcRef<'_>,
)
| 97 | |
| 98 | /// Same as `Interpreter::run`, except for extended opcodes. |
| 99 | fn run_extended( |
| 100 | state: &mut MachineState, |
| 101 | pc: UnsafeBytecodeStream, |
| 102 | pc_ref: ExecutingPcRef<'_>, |
| 103 | ) -> Done { |
| 104 | let mut i = debug(state, pc, pc_ref); |
| 105 | let Ok(opcode) = ExtendedOpcode::decode(i.bytecode()); |
| 106 | let handler = EXTENDED_OPCODE_HANDLER_TABLE[opcode as usize]; |
| 107 | tail_call!(handler(i.0.state, i.0.pc, i.0.executing_pc)); |
| 108 | } |
| 109 | |
| 110 | static OPCODE_HANDLER_TABLE: [Handler; Opcode::MAX as usize + 1] = { |
| 111 | macro_rules! define_opcode_handler_table { |