diff options
author | Andy Wingo <wingo@pobox.com> | 2013-10-26 15:16:09 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2013-10-26 15:16:09 +0200 |
commit | be8b62ca7f66f6acd1d342cd8576688cc33baf1c (patch) | |
tree | 980991746aa1ec3108d0b511b9adb6f91e5fbfa7 /module/language | |
parent | 4fc6b4d2c5566aa54393c3124def2d7759dd447a (diff) | |
download | guile-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')
-rw-r--r-- | module/language/cps/compile-rtl.scm | 9 | ||||
-rw-r--r-- | module/language/cps/primitives.scm | 4 |
2 files changed, 11 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)) diff --git a/module/language/cps/primitives.scm b/module/language/cps/primitives.scm index 1c683e2f3..74ff65c88 100644 --- a/module/language/cps/primitives.scm +++ b/module/language/cps/primitives.scm @@ -51,6 +51,10 @@ (nil? . (1 . 1)) (pair? . (1 . 1)) (struct? . (1 . 1)) + (string? . (1 . 1)) + (vector? . (1 . 1)) + (symbol? . (1 . 1)) + (variable? . (1 . 1)) (char? . (1 . 1)) (eq? . (1 . 2)) (eqv? . (1 . 2)) |