[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] branch master updated: Fix baseline compilation of condi
From: |
Andy Wingo |
Subject: |
[Guile-commits] branch master updated: Fix baseline compilation of conditionals |
Date: |
Mon, 04 May 2020 16:29:32 -0400 |
This is an automated email from the git hooks/post-receive script.
wingo pushed a commit to branch master
in repository guile.
The following commit(s) were added to refs/heads/master by this push:
new cfdaf35 Fix baseline compilation of conditionals
cfdaf35 is described below
commit cfdaf35d7380c790c152762a5b155a8dde8ddf83
Author: Andy Wingo <address@hidden>
AuthorDate: Mon May 4 22:28:34 2020 +0200
Fix baseline compilation of conditionals
* module/language/tree-il/compile-bytecode.scm (canonicalize): Don't add
an extra false? around predicates.
(compile-closure): Fix predicate comparison instructions.
---
module/language/tree-il/compile-bytecode.scm | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/module/language/tree-il/compile-bytecode.scm
b/module/language/tree-il/compile-bytecode.scm
index d0e5271..e2eaabf 100644
--- a/module/language/tree-il/compile-bytecode.scm
+++ b/module/language/tree-il/compile-bytecode.scm
@@ -399,6 +399,7 @@
(define (finish-conditional exp)
(define (true? x) (match x (($ <const> _ val) val) (_ #f)))
(define (false? x) (match x (($ <const> _ val) (not val)) (_ #f)))
+ (define (predicate? name) (primitive-predicate? (lookup-primitive name)))
(match exp
(($ <conditional> src ($ <conditional> _ test (? true?) (? false?))
consequent alternate)
@@ -406,6 +407,8 @@
(($ <conditional> src ($ <conditional> _ test (? false?) (? true?))
consequent alternate)
(finish-conditional (make-conditional src test alternate consequent)))
+ (($ <conditional> src ($ <primcall> _ (? predicate?)))
+ exp)
(($ <conditional> src test consequent alternate)
(make-conditional src (make-primcall src 'false? (list test))
alternate consequent))))
@@ -864,8 +867,8 @@ in the frame with for the lambda-case clause @var{clause}."
(kf (gensym "false"))
(kdone (gensym "done")))
(match args
- ((a) (emit asm args a kf))
- ((a b) (emit asm args a b kf)))
+ ((a) (emit asm a kf))
+ ((a b) (emit asm a b kf)))
(for-context consequent env ctx)
(unless (eq? ctx 'tail)
(emit-j asm kdone))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Guile-commits] branch master updated: Fix baseline compilation of conditionals,
Andy Wingo <=