94 lines
2.2 KiB
Factor
94 lines
2.2 KiB
Factor
IN: compiler.cfg.stack-analysis.merge.tests
|
|
USING: compiler.cfg.stack-analysis.merge tools.test arrays accessors
|
|
compiler.cfg.instructions compiler.cfg.stack-analysis.state
|
|
compiler.cfg compiler.cfg.registers compiler.cfg.debugger
|
|
cpu.architecture make assocs
|
|
sequences kernel classes ;
|
|
|
|
[
|
|
{ D 0 }
|
|
{ V int-regs 0 V int-regs 1 }
|
|
] [
|
|
<state>
|
|
|
|
<basic-block> V{ T{ ##branch } } >>instructions
|
|
<basic-block> V{ T{ ##branch } } >>instructions 2array
|
|
|
|
<state> H{ { D 0 V int-regs 0 } } >>locs>vregs
|
|
<state> H{ { D 0 V int-regs 1 } } >>locs>vregs 2array
|
|
|
|
[ merge-locs locs>vregs>> keys ] { } make first inputs>>
|
|
] unit-test
|
|
|
|
[
|
|
{ D 0 }
|
|
##peek
|
|
] [
|
|
<state>
|
|
|
|
<basic-block> V{ T{ ##branch } } >>instructions
|
|
<basic-block> V{ T{ ##branch } } >>instructions 2array
|
|
|
|
[
|
|
<state>
|
|
<state> H{ { D 0 V int-regs 1 } } >>locs>vregs 2array
|
|
|
|
[ merge-locs locs>vregs>> keys ] { } make drop
|
|
] keep first instructions>> first class
|
|
] unit-test
|
|
|
|
[
|
|
0 ##inc-d
|
|
] [
|
|
<state>
|
|
|
|
<basic-block> V{ T{ ##branch } } >>instructions
|
|
<basic-block> V{ T{ ##branch } } >>instructions 2array
|
|
|
|
[
|
|
<state> -1 >>ds-height
|
|
<state> 2array
|
|
|
|
[ merge-ds-heights ds-height>> ] { } make drop
|
|
] keep first instructions>> first class
|
|
] unit-test
|
|
|
|
[
|
|
0
|
|
{ D 0 }
|
|
{ 1 1 }
|
|
] [
|
|
<state>
|
|
|
|
<basic-block> V{ T{ ##branch } } >>instructions
|
|
<basic-block> V{ T{ ##branch } } >>instructions 2array
|
|
|
|
[
|
|
<state> -1 >>ds-height H{ { D 1 V int-regs 0 } } >>locs>vregs
|
|
<state> H{ { D 0 V int-regs 1 } } >>locs>vregs 2array
|
|
|
|
[ merge-locs [ ds-height>> ] [ locs>vregs>> keys ] bi ] { } make drop
|
|
] keep
|
|
[ instructions>> length ] map
|
|
] unit-test
|
|
|
|
[
|
|
-1
|
|
{ D -1 }
|
|
{ 1 1 }
|
|
] [
|
|
<state>
|
|
|
|
<basic-block> V{ T{ ##branch } } >>instructions
|
|
<basic-block> V{ T{ ##branch } } >>instructions 2array
|
|
|
|
[
|
|
<state> -1 >>ds-height H{ { D -1 V int-regs 0 } } >>locs>vregs
|
|
<state> -1 >>ds-height H{ { D -1 V int-regs 1 } } >>locs>vregs 2array
|
|
|
|
[ [ merge-ds-heights ] [ merge-locs ] 2bi ] { } make drop
|
|
[ ds-height>> ] [ locs>vregs>> keys ] bi
|
|
] keep
|
|
[ instructions>> length ] map
|
|
] unit-test
|