gc-map-insn


Vocabulary
compiler.cfg.instructions

Definition
IN: compiler.cfg.instructions

UNION: gc-map-insn ##call-gc ##box ##box-long-long
factor-call-insn ;


Methods
USING: compiler.cfg.alias-analysis compiler.cfg.instructions ;

M: gc-map-insn analyze-aliases def-acs clear-recent-stores ;


USING: accessors compiler.cfg.instructions
compiler.cfg.linear-scan.assignment kernel ;

M: gc-map-insn assign-registers-in-insn
[
[ assign-insn-defs ] [ assign-insn-uses ]
[ assign-insn-temps ] tri
] [
gc-map>>
[ assign-gc-roots ] [ assign-derived-roots ] bi
] bi ;


USING: accessors compiler.cfg.instructions generic kernel ;

M: gc-map-insn clone
M\ gc-map-insn clone (call-next-method)
[ clone ] change-gc-map ;


USING: compiler.cfg.instructions compiler.cfg.write-barrier
namespaces sets ;

M: gc-map-insn eliminate-write-barrier
fresh-allocations get clear-set ;


USING: compiler.cfg.gc-checks.private compiler.cfg.instructions
;

M: gc-map-insn gc-check-offsets* gc-check-here ;


USING: compiler.cfg.instructions compiler.cfg.save-contexts
kernel ;

M: gc-map-insn needs-save-context? drop t ;


USING: accessors assocs compiler.cfg.def-use
compiler.cfg.instructions
compiler.cfg.linear-scan.live-intervals kernel sequences ;

M: gc-map-insn uses-vregs*
[ uses-vregs ] [ gc-map>> derived-roots>> values ] bi
append ;


USING: accessors compiler.cfg.instructions
compiler.cfg.registers
compiler.cfg.stacks.uninitialized.private kernel namespaces ;

M: gc-map-insn visit-insn
gc-map>> ds-loc get clone >>scrub-d
rs-loc get clone >>scrub-r drop ;


USING: compiler.cfg.instructions compiler.cfg.liveness kernel ;

M: gc-map-insn visit-insn
[ kill-defs ] [ fill-gc-map ] [ gen-uses ] tri ;