diff --git a/basis/compiler/cfg/def-use/def-use.factor b/basis/compiler/cfg/def-use/def-use.factor index 28351ca7b2..1484b3ec72 100644 --- a/basis/compiler/cfg/def-use/def-use.factor +++ b/basis/compiler/cfg/def-use/def-use.factor @@ -51,10 +51,10 @@ M: ##alien-getter uses-vregs src>> 1array ; M: ##alien-setter uses-vregs [ src>> ] [ value>> ] bi 2array ; M: ##fixnum-overflow uses-vregs [ src1>> ] [ src2>> ] bi 2array ; M: ##phi uses-vregs inputs>> ; +M: ##gc uses-vregs live-in>> ; M: _conditional-branch uses-vregs [ src1>> ] [ src2>> ] bi 2array ; M: _compare-imm-branch uses-vregs src1>> 1array ; M: _dispatch uses-vregs src>> 1array ; -M: _gc uses-vregs live-in>> ; M: insn uses-vregs drop f ; ! Instructions that use vregs @@ -66,7 +66,8 @@ UNION: vreg-insn ##fixnum-overflow ##conditional-branch ##compare-imm-branch +##phi +##gc _conditional-branch _compare-imm-branch -_dispatch -_gc ; +_dispatch ; diff --git a/basis/compiler/cfg/gc-checks/gc-checks.factor b/basis/compiler/cfg/gc-checks/gc-checks.factor index 7a47da00a8..91e79ea2dd 100644 --- a/basis/compiler/cfg/gc-checks/gc-checks.factor +++ b/basis/compiler/cfg/gc-checks/gc-checks.factor @@ -14,7 +14,7 @@ IN: compiler.cfg.gc-checks : insert-gc-check ( basic-block -- ) dup gc? [ dup - [ swap object-pointer-regs \ _gc new-insn suffix ] + [ swap object-pointer-regs \ ##gc new-insn prefix ] change-instructions drop ] [ drop ] if ; diff --git a/basis/compiler/cfg/instructions/instructions.factor b/basis/compiler/cfg/instructions/instructions.factor index d2d444a4a5..314a66ba9c 100644 --- a/basis/compiler/cfg/instructions/instructions.factor +++ b/basis/compiler/cfg/instructions/instructions.factor @@ -223,14 +223,14 @@ INSN: ##compare-imm < ##binary-imm cc temp ; INSN: ##compare-float-branch < ##conditional-branch ; INSN: ##compare-float < ##binary cc temp ; +INSN: ##gc live-in ; + ! Instructions used by machine IR only. INSN: _prologue stack-frame ; INSN: _epilogue stack-frame ; INSN: _label id ; -INSN: _gc live-in ; - INSN: _branch label ; INSN: _dispatch src temp ; diff --git a/basis/compiler/cfg/stack-frame/stack-frame.factor b/basis/compiler/cfg/stack-frame/stack-frame.factor index d545b6d15c..fd11260f97 100644 --- a/basis/compiler/cfg/stack-frame/stack-frame.factor +++ b/basis/compiler/cfg/stack-frame/stack-frame.factor @@ -32,8 +32,8 @@ M: insn compute-stack-frame* frame-required? on ] when ; -\ _gc t frame-required? set-word-prop \ _spill t frame-required? set-word-prop +\ ##gc t frame-required? set-word-prop \ ##fixnum-add t frame-required? set-word-prop \ ##fixnum-sub t frame-required? set-word-prop \ ##fixnum-mul t frame-required? set-word-prop