1 ! Copyright (C) 2009, 2010 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: compiler.cfg.instructions compiler.cfg.registers
4 compiler.cfg.rpo cpu.architecture kernel sequences ;
5 IN: compiler.cfg.save-contexts
7 UNION: context-modifier ##phi ##inc ##callback-inputs ;
9 : save-context-offset ( insns -- n )
10 [ context-modifier? not ] find drop ;
12 UNION: needs-save-context-insn
18 : insns-needs-save-context? ( insns -- ? )
19 [ needs-save-context-insn? ] any? ;
21 : insert-save-context ( insns -- insns' )
22 dup insns-needs-save-context? [
26 ##save-context new-insn
28 [ save-context-offset ] keep
32 : insert-save-contexts ( cfg -- )
33 [ insert-save-context ] simple-optimization ;