summaryrefslogtreecommitdiffstats
path: root/vm.c
diff options
context:
space:
mode:
Diffstat (limited to 'vm.c')
-rw-r--r--vm.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/vm.c b/vm.c
index 399bef19..9aa0b72b 100644
--- a/vm.c
+++ b/vm.c
@@ -1142,18 +1142,20 @@ val vm_execute_closure(val fun, struct args *args)
}
while (fixparam >= 2) {
- fixparam -= 2;
- argw = vm.code[vm.ip++];
- unsigned xreg = vm_arg_operand_lo(argw);
- unsigned yreg = vm_arg_operand_hi(argw);
+ vm_word_t aw = vm.code[vm.ip++];
+ unsigned xreg = vm_arg_operand_lo(aw);
+ unsigned yreg = vm_arg_operand_hi(aw);
vm_set(dspl, xreg, args_get(args, &ix));
vm_set(dspl, yreg, args_get(args, &ix));
+ fixparam -= 2;
+ argw = aw;
}
if (fixparam) {
- argw = vm.code[vm.ip++];
- unsigned xreg = vm_arg_operand_lo(argw);
+ vm_word_t aw = vm.code[vm.ip++];
+ unsigned xreg = vm_arg_operand_lo(aw);
vm_set(dspl, xreg, args_get(args, &ix));
+ argw = aw;
}
if (variadic) {