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/system/vm/assembler.scm | |
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/system/vm/assembler.scm')
-rw-r--r-- | module/system/vm/assembler.scm | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm index f43acb3c8..749b69383 100644 --- a/module/system/vm/assembler.scm +++ b/module/system/vm/assembler.scm @@ -638,6 +638,37 @@ returned instead." (let ((loc (intern-constant asm (make-static-procedure label)))) (emit-make-non-immediate asm dst loc))) +(define-syntax-rule (define-tc7-macro-assembler name tc7) + (define-macro-assembler (name asm slot invert? label) + (emit-br-if-tc7 asm slot invert? tc7 label))) + +;; Keep in sync with tags.h. Part of Guile's ABI. Currently unused +;; macro assemblers are commented out. +(define-tc7-macro-assembler br-if-symbol 5) +(define-tc7-macro-assembler br-if-variable 7) +(define-tc7-macro-assembler br-if-vector 13) +;(define-tc7-macro-assembler br-if-weak-vector 13) +(define-tc7-macro-assembler br-if-string 21) +;(define-tc7-macro-assembler br-if-heap-number 23) +;(define-tc7-macro-assembler br-if-stringbuf 39) +;(define-tc7-macro-assembler br-if-bytevector 77) +;(define-tc7-macro-assembler br-if-pointer 31) +;(define-tc7-macro-assembler br-if-hashtable 29) +;(define-tc7-macro-assembler br-if-fluid 37) +;(define-tc7-macro-assembler br-if-dynamic-state 45) +;(define-tc7-macro-assembler br-if-frame 47) +;(define-tc7-macro-assembler br-if-objcode 53) +;(define-tc7-macro-assembler br-if-vm 55) +;(define-tc7-macro-assembler br-if-vm-cont 71) +;(define-tc7-macro-assembler br-if-rtl-program 69) +;(define-tc7-macro-assembler br-if-program 79) +;(define-tc7-macro-assembler br-if-weak-set 85) +;(define-tc7-macro-assembler br-if-weak-table 87) +;(define-tc7-macro-assembler br-if-array 93) +;(define-tc7-macro-assembler br-if-bitvector 95) +;(define-tc7-macro-assembler br-if-port 125) +;(define-tc7-macro-assembler br-if-smob 127) + (define-macro-assembler (begin-program asm label properties) (emit-label asm label) (let ((meta (make-meta label properties (asm-start asm)))) |