(($ $continue k src exp)
(use-k! k)
(match exp
- (($ $var sym)
- (use! sym))
-
(($ $call proc args)
(use! proc)
(for-each use! args))
(lambda (use)
(match (find-expression (lookup-cont use conts))
(($ $call) #f)
- (($ $values) #f)
+ (($ $values (_ _ . _)) #f)
(($ $primcall 'free-ref (closure slot))
(not (eq? sym slot)))
(($ $primcall 'free-set! (closure slot value))
#f)
(($ $primcall 'resolve (name bound?))
(eq? sym name))
- (($ $primcall 'make-vector (len init))
- (not (and (eq? sym len) (immediate-u8? val))))
- (($ $primcall 'vector-ref (v i))
- (not (and (eq? sym i) (immediate-u8? val))))
- (($ $primcall 'vector-set! (v i x))
- (not (and (eq? sym i) (immediate-u8? val))))
+ (($ $primcall 'make-vector/immediate (len init))
+ (not (eq? sym len)))
+ (($ $primcall 'vector-ref/immediate (v i))
+ (not (eq? sym i)))
+ (($ $primcall 'vector-set!/immediate (v i x))
+ (not (eq? sym i)))
+ (($ $primcall 'allocate-struct/immediate (vtable nfields))
+ (not (eq? sym nfields)))
+ (($ $primcall 'struct-ref/immediate (s n))
+ (not (eq? sym n)))
+ (($ $primcall 'struct-set!/immediate (s n x))
+ (not (eq? sym n)))
(($ $primcall 'builtin-ref (idx))
#f)
(_ #t)))