diff options
author | Andy Wingo <wingo@pobox.com> | 2020-05-09 22:23:00 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2020-05-09 22:23:00 +0200 |
commit | 04e3cece45ec72283ec2a8519c7a73f497896fd1 (patch) | |
tree | 2101a4b0349321e16788511f253c840c648a5bda /module/language/tree-il/compile-bytecode.scm | |
parent | c49ccfbc3d9530efcff54f99a9b927af05409e2c (diff) | |
download | guile-04e3cece45ec72283ec2a8519c7a73f497896fd1.tar.gz |
Fix baseline compiler bugs
* module/language/tree-il/compile-bytecode.scm (compile-closure): Fix
FP-relative computation for "receive" target. Fix value-at syntax in
conditional.
Diffstat (limited to 'module/language/tree-il/compile-bytecode.scm')
-rw-r--r-- | module/language/tree-il/compile-bytecode.scm | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/module/language/tree-il/compile-bytecode.scm b/module/language/tree-il/compile-bytecode.scm index e327ca40b..cb8779938 100644 --- a/module/language/tree-il/compile-bytecode.scm +++ b/module/language/tree-il/compile-bytecode.scm @@ -1111,8 +1111,8 @@ in the frame with for the lambda-case clause @var{clause}." (let ((proc-slot (let ((env (push-frame env))) (fold for-push (for-push proc env) args) (stack-height env)))) - (emit-call asm proc-slot (length args)) - (emit-receive src dst proc-slot frame-size))) + (emit-call asm proc-slot (1+ (length args))) + (emit-receive asm (stack-height base) proc-slot frame-size))) (($ <primcall> src (? variadic-constructor? name) args) ;; Stage result in 0 to avoid stompling args. @@ -1164,7 +1164,7 @@ in the frame with for the lambda-case clause @var{clause}." (apply emit asm dst (for-args args env))))))))) (($ <prompt>) (visit-prompt exp env `(value-at . ,base))) - (($ <conditional>) (visit-conditional exp env `(value-at. ,base))) + (($ <conditional>) (visit-conditional exp env `(value-at . ,base))) (($ <seq>) (visit-seq exp env `(value-at . ,base))) (($ <let>) (visit-let exp env `(value-at . ,base))) (($ <fix>) (visit-fix exp env `(value-at . ,base))) |