84 lines
1.4 KiB
Factor
84 lines
1.4 KiB
Factor
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
|