diff --git a/module/system/vm/assemble.scm b/module/system/vm/assemble.scm index 5987f1cda..acdcbe3ca 100644 --- a/module/system/vm/assemble.scm +++ b/module/system/vm/assemble.scm @@ -173,6 +173,7 @@ (lambda (obj+index) (cond ((cdr obj+index) => (lambda (n) + (push-code! '(dup)) (push-code! `(local-set ,n))))))))) (push-code! (car stack))))) ;; closures diff --git a/src/vm_system.c b/src/vm_system.c index 97ac41e41..ba31f74ae 100644 --- a/src/vm_system.c +++ b/src/vm_system.c @@ -70,7 +70,8 @@ VM_DEFINE_INSTRUCTION (drop, "drop", 0, 0, 0) VM_DEFINE_INSTRUCTION (dup, "dup", 0, 0, 1) { - PUSH (*sp); + SCM x = *sp; + PUSH (x); NEXT; }