summaryrefslogtreecommitdiff
path: root/module/language/cps/compile-rtl.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2013-10-26 15:16:09 +0200
committerAndy Wingo <wingo@pobox.com>2013-10-26 15:16:09 +0200
commitbe8b62ca7f66f6acd1d342cd8576688cc33baf1c (patch)
tree980991746aa1ec3108d0b511b9adb6f91e5fbfa7 /module/language/cps/compile-rtl.scm
parent4fc6b4d2c5566aa54393c3124def2d7759dd447a (diff)
downloadguile-be8b62ca7f66f6acd1d342cd8576688cc33baf1c.tar.gz
RTL compiler: Compile TC7 branches.
* module/system/vm/assembler.scm: * module/system/vm/disassembler.scm (code-annotation): * module/language/cps/primitives.scm (*branching-primcall-arities*): * module/language/cps/compile-rtl.scm (emit-rtl-sequence): Add support for compiling symbol?, variable?, vector?, and string? branches.
Diffstat (limited to 'module/language/cps/compile-rtl.scm')
-rw-r--r--module/language/cps/compile-rtl.scm9
1 files changed, 7 insertions, 2 deletions
diff --git a/module/language/cps/compile-rtl.scm b/module/language/cps/compile-rtl.scm
index 74e44b290..b979a6be9 100644
--- a/module/language/cps/compile-rtl.scm
+++ b/module/language/cps/compile-rtl.scm
@@ -274,8 +274,13 @@
(($ $primcall 'pair? (a)) (unary emit-br-if-pair a))
(($ $primcall 'struct? (a)) (unary emit-br-if-struct a))
(($ $primcall 'char? (a)) (unary emit-br-if-char a))
- ;; Add TC7 tests here
- (($ $primcall 'eq? (a b)) (binary emit-br-if-eq a b))
+ (($ $primcall 'symbol? (a)) (unary emit-br-if-symbol a))
+ (($ $primcall 'variable? (a)) (unary emit-br-if-variable a))
+ (($ $primcall 'vector? (a)) (unary emit-br-if-vector a))
+ (($ $primcall 'string? (a)) (unary emit-br-if-string a))
+ ;; Add more TC7 tests here. Keep in sync with
+ ;; *branching-primcall-arities* in (language cps primitives) and
+ ;; the set of macro-instructions in assembly.scm.
(($ $primcall 'eq? (a b)) (binary emit-br-if-eq a b))
(($ $primcall 'eqv? (a b)) (binary emit-br-if-eqv a b))
(($ $primcall 'equal? (a b)) (binary emit-br-if-equal a b))