summaryrefslogtreecommitdiff
path: root/module/language/tree-il/compile-cps.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/language/tree-il/compile-cps.scm')
-rw-r--r--module/language/tree-il/compile-cps.scm47
1 files changed, 22 insertions, 25 deletions
diff --git a/module/language/tree-il/compile-cps.scm b/module/language/tree-il/compile-cps.scm
index 6c8884add..ff52a5f49 100644
--- a/module/language/tree-il/compile-cps.scm
+++ b/module/language/tree-il/compile-cps.scm
@@ -104,7 +104,7 @@
($continue kcast src
($primcall 'assume-u64 `(0 . ,(target-max-vector-length)) (ulen)))))
(letk krsh
- ($kargs ('w0) (w0)
+ ($kargs ('w0) (w0) ;TAGS-SENSITIVE
($continue kassume src ($primcall 'ursh/immediate 8 (w0)))))
(letk kv
($kargs () ()
@@ -114,7 +114,7 @@
($kargs () ()
($branch knot-vector kv src pred #f (v))))
(build-term
- ($branch knot-vector kheap-object src 'heap-object? #f (v)))))
+ ($branch knot-vector kheap-object src 'thob? #f (v)))))
(define (untag-fixnum-index-in-range cps src op idx slen have-index-in-range)
;; Precondition: SLEN is a non-negative S64 that is representable as a
@@ -342,7 +342,7 @@
(letk ktag0
($kargs ('v) (v)
($continue ktag1 src
- ($primcall 'ulsh/immediate 8 (usize)))))
+ ($primcall 'ulsh/immediate 8 (usize))))) ;TAGS-SENSITIVE
(letk kalloc
($kargs ('nwords) (nwords)
($continue ktag0 src
@@ -420,8 +420,7 @@
(letk knot-pair ($kargs () () ($throw src 'throw/value+data not-pair (x))))
(let$ body (is-pair))
(letk k ($kargs () () ,body))
- (letk kheap-object ($kargs () () ($branch knot-pair k src pred #f (x))))
- (build-term ($branch knot-pair kheap-object src 'heap-object? #f (x)))))
+ (build-term ($branch knot-pair k src 'pair? #f (x)))))
(define-primcall-converter cons
(lambda (cps k src op param head tail)
@@ -433,14 +432,14 @@
(letk ktail
($kargs () ()
($continue kdone src
- ($primcall 'scm-set!/immediate '(pair . 1) (pair tail)))))
+ ($primcall 'tagged-scm-set!/immediate '(pair . 1) (pair tail)))))
(letk khead
($kargs ('pair) (pair)
($continue ktail src
- ($primcall 'scm-set!/immediate '(pair . 0) (pair head)))))
+ ($primcall 'tagged-scm-set!/immediate '(pair . 0) (pair head)))))
(build-term
($continue khead src
- ($primcall 'allocate-words/immediate '(pair . 2) ()))))))
+ ($primcall 'tagged-allocate-words/immediate '(pair . 2) ()))))))
(define-primcall-converter car
(lambda (cps k src op param pair)
@@ -450,7 +449,7 @@
(with-cps cps
(build-term
($continue k src
- ($primcall 'scm-ref/immediate '(pair . 0) (pair)))))))))
+ ($primcall 'tagged-scm-ref/immediate '(pair . 0) (pair)))))))))
(define-primcall-converter cdr
(lambda (cps k src op param pair)
@@ -460,7 +459,7 @@
(with-cps cps
(build-term
($continue k src
- ($primcall 'scm-ref/immediate '(pair . 1) (pair)))))))))
+ ($primcall 'tagged-scm-ref/immediate '(pair . 1) (pair)))))))))
(define-primcall-converter set-car!
(lambda (cps k src op param pair val)
@@ -471,7 +470,7 @@
(with-cps cps
(build-term
($continue k src
- ($primcall 'scm-set!/immediate '(pair . 0) (pair val)))))))))
+ ($primcall 'tagged-scm-set!/immediate '(pair . 0) (pair val)))))))))
(define-primcall-converter set-cdr!
(lambda (cps k src op param pair val)
@@ -482,7 +481,7 @@
(with-cps cps
(build-term
($continue k src
- ($primcall 'scm-set!/immediate '(pair . 1) (pair val)))))))))
+ ($primcall 'tagged-scm-set!/immediate '(pair . 1) (pair val)))))))))
(define-primcall-converter box
(lambda (cps k src op param val)
@@ -517,7 +516,7 @@
(let$ body (is-box))
(letk k ($kargs () () ,body))
(letk kheap-object ($kargs () () ($branch knot-box k src 'variable? #f (x))))
- (build-term ($branch knot-box kheap-object src 'heap-object? #f (x)))))
+ (build-term ($branch knot-box kheap-object src 'thob? #f (x)))))
(define-primcall-converter box-ref
(lambda (cps k src op param box)
@@ -562,7 +561,7 @@
($continue k src ($primcall 'scm-ref/tag 'struct (x)))))
(letk kheap-object
($kargs () () ($branch knot-struct kvtable src 'struct? #f (x))))
- (build-term ($branch knot-struct kheap-object src 'heap-object? #f (x)))))
+ (build-term ($branch knot-struct kheap-object src 'thob? #f (x)))))
(define-primcall-converter struct-vtable
(lambda (cps k src op param struct)
@@ -859,7 +858,7 @@
(with-cps cps
(letk kf ($kargs () () ($throw src 'throw/value+data bad-type (x))))
(letk kheap-object ($kargs () () ($branch kf k src pred #f (x))))
- (build-term ($branch kf kheap-object src 'heap-object? #f (x)))))
+ (build-term ($branch kf kheap-object src 'thob? #f (x)))))
(define (prepare-bytevector-access cps src op pred bv idx width
have-ptr-and-uidx)
@@ -1104,7 +1103,7 @@
($kargs () ()
($branch knot-string ks src 'string? #f (x))))
(build-term
- ($branch knot-string kheap-object src 'heap-object? #f (x)))))
+ ($branch knot-string kheap-object src 'thob? #f (x)))))
(define (ensure-char cps src op x have-char)
(define msg "Wrong type argument (expecting char): ~S")
@@ -1133,7 +1132,7 @@
(lambda (cps k src op param s idx)
(define out-of-range
#(out-of-range string-ref "Argument 2 out of range: ~S"))
- (define stringbuf-f-wide #x400)
+ (define stringbuf-f-wide #x400) ;TAGS-SENSITIVE
(ensure-string
cps src op s
(lambda (cps ulen)
@@ -1203,7 +1202,7 @@
(lambda (cps k src op param s idx ch)
(define out-of-range
#(out-of-range string-ref "Argument 2 out of range: ~S"))
- (define stringbuf-f-wide #x400)
+ (define stringbuf-f-wide #x400) ;TAGS-SENSITIVE
(ensure-string
cps src op s
(lambda (cps ulen)
@@ -1327,7 +1326,7 @@
(let$ body (is-atomic-box))
(letk k ($kargs () () ,body))
(letk kheap-object ($kargs () () ($branch kbad k src 'atomic-box? #f (x))))
- (build-term ($branch kbad kheap-object src 'heap-object? #f (x)))))
+ (build-term ($branch kbad kheap-object src 'thob? #f (x)))))
(define-primcall-converter atomic-box-ref
(lambda (cps k src op param x)
@@ -1421,7 +1420,7 @@
($ (have-var box)))))))
(letk ktest ($kargs () () ,body))
(letk kbox ($kargs ('box) (box)
- ($branch kbad ktest src 'heap-object? #f (box))))
+ ($branch kbad ktest src 'thob? #f (box))))
(letk kname ($kargs ('name) (name-var)
($continue kbox src
($primcall 'lookup #f (mod name-var)))))
@@ -2136,7 +2135,7 @@
(letk kt* ($kargs () ()
($branch kf kt src name #f args)))
(build-term
- ($branch kf kt* src 'heap-object? #f args)))
+ ($branch kf kt* src 'thob? #f args)))
(with-cps cps
(build-term ($branch kf kt src name #f args)))))))
(($ <conditional> src test consequent alternate)
@@ -2459,10 +2458,8 @@ integer."
(heap-number? b)
(bool (primcall heap-numbers-equal? a b))))
('equal?
- ;; Partially inline.
- (primcall-chain (heap-object? a)
- (heap-object? b)
- (primcall equal? a b))))))))
+ ;; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ (primcall equal? a b)))))))
(($ <primcall> src 'vector args)
;; Expand to "allocate-vector" + "vector-init!".