Performs the internal part of [`Vm::call`] where bytecode is actually executed. # Unsafety In addition to all the invariants documented for `call`, you may only invoke `call_run` after invoking `call_start` to initialize this call's arguments.
(&mut self, pc: NonNull<u8>)
| 141 | /// may only invoke `call_run` after invoking `call_start` to |
| 142 | /// initialize this call's arguments. |
| 143 | pub unsafe fn call_run(&mut self, pc: NonNull<u8>) -> DoneReason<()> { |
| 144 | self.state.debug_assert_done_reason_none(); |
| 145 | let interpreter = Interpreter { |
| 146 | state: &mut self.state, |
| 147 | pc: unsafe { UnsafeBytecodeStream::new(pc) }, |
| 148 | executing_pc: self.executing_pc.as_ref(), |
| 149 | }; |
| 150 | let done = interpreter.run(); |
| 151 | self.state.done_decode(done) |
| 152 | } |
| 153 | |
| 154 | /// Performs the tail end of [`Vm::call`] by returning the values as |
| 155 | /// determined by `rets` according to Pulley's ABI. |