Don't update PC on every instruction (#130)

This commit is contained in:
Sergey Pepyakin 2018-10-19 16:55:07 +02:00 committed by GitHub
parent 7509477a61
commit ad4236263a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 2 additions and 5 deletions

View File

@ -237,12 +237,9 @@ impl Interpreter {
let instruction = iter.next().expect("instruction"); let instruction = iter.next().expect("instruction");
match self.run_instruction(function_context, instruction)? { match self.run_instruction(function_context, instruction)? {
InstructionOutcome::RunNextInstruction => { InstructionOutcome::RunNextInstruction => {},
function_context.position = iter.position();
},
InstructionOutcome::Branch(target) => { InstructionOutcome::Branch(target) => {
function_context.position = target.dst_pc; iter = instructions.iterate_from(target.dst_pc);
iter = instructions.iterate_from(function_context.position);
self.value_stack.drop_keep(target.drop_keep); self.value_stack.drop_keep(target.drop_keep);
}, },
InstructionOutcome::ExecuteCall(func_ref) => { InstructionOutcome::ExecuteCall(func_ref) => {