USING: accessors compiler.cfg.instructions compiler.cfg.registers compiler.cfg.save-contexts compiler.test cpu.architecture kernel namespaces tools.test ; IN: compiler.cfg.save-contexts.tests ! insns-needs-save-context? { f f t } [ { T{ ##call-gc } } insns-needs-save-context? { T{ ##add f 1 2 3 } T{ ##branch } } insns-needs-save-context? { T{ ##alien-invoke } } insns-needs-save-context? ] unit-test H{ } clone representations set V{ T{ ##add f 1 2 3 } T{ ##branch } } 0 test-bb 0 get [ insert-save-context ] change-instructions drop { V{ T{ ##add f 1 2 3 } T{ ##branch } } } [ 0 get instructions>> ] unit-test 4 vreg-counter set-global V{ T{ ##inc f d: 3 } T{ ##box f 4 3 "from_signed_4" int-rep T{ gc-map { gc-roots { } } } } } 0 test-bb 0 get [ insert-save-context ] change-instructions drop { V{ T{ ##inc f d: 3 } T{ ##save-context f 5 6 } T{ ##box f 4 3 "from_signed_4" int-rep T{ gc-map { gc-roots { } } } } } } [ 0 get instructions>> ] unit-test V{ T{ ##phi } T{ ##box } } 0 test-bb 0 get [ insert-save-context ] change-instructions drop { V{ T{ ##phi } T{ ##save-context f 7 8 } T{ ##box } } } [ 0 get instructions>> ] unit-test { 3 } [ V{ T{ ##phi } T{ ##phi } T{ ##phi } T{ insn } } save-context-offset ] unit-test