compiler.cfg.stacks.*: create-locs, word for creating stack locations
from a sequencedb4
parent
f2c67d6ab4
commit
a195e361df
|
@ -15,8 +15,8 @@ IN: compiler.cfg.stacks.clearing.tests
|
|||
|
||||
{
|
||||
{
|
||||
T{ ##replace-imm { src 17 } { loc D 0 } }
|
||||
T{ ##replace-imm { src 17 } { loc D 1 } }
|
||||
T{ ##replace-imm { src 17 } { loc D 0 } }
|
||||
}
|
||||
} [
|
||||
{ { 2 { } } { 0 { } } } state>replaces
|
||||
|
@ -25,8 +25,8 @@ IN: compiler.cfg.stacks.clearing.tests
|
|||
{
|
||||
V{
|
||||
T{ ##inc { loc D 2 } { insn# 0 } }
|
||||
T{ ##replace-imm { src 17 } { loc T{ ds-loc } } }
|
||||
T{ ##replace-imm { src 17 } { loc T{ ds-loc { n 1 } } } }
|
||||
T{ ##replace-imm { src 17 } { loc T{ ds-loc } } }
|
||||
T{ ##peek { loc D 2 } { insn# 1 } }
|
||||
}
|
||||
} [
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
USING: accessors arrays assocs combinators.short-circuit
|
||||
compiler.cfg.instructions compiler.cfg.registers compiler.cfg.rpo
|
||||
compiler.cfg.stacks.map kernel math sequences ;
|
||||
compiler.cfg.stacks compiler.cfg.stacks.map kernel math sequences ;
|
||||
IN: compiler.cfg.stacks.clearing
|
||||
|
||||
: state>replaces ( state -- replaces )
|
||||
[ stack>vacant ] map first2
|
||||
[ [ <ds-loc> ] map ] [ [ <rs-loc> ] map ] bi* append
|
||||
[ stack>vacant ] map { ds-loc rs-loc } [ swap create-locs ] 2map concat
|
||||
[ 17 swap f ##replace-imm boa ] map ;
|
||||
|
||||
: dangerous-insn? ( state insn -- ? )
|
||||
|
|
|
@ -12,6 +12,11 @@ IN: compiler.cfg.stacks.tests
|
|||
height-state get
|
||||
] cfg-unit-test
|
||||
|
||||
! stack-locs
|
||||
{ { D 4 D 3 D 2 D 1 D 0 } } [
|
||||
ds-loc 5 stack-locs >array
|
||||
] unit-test
|
||||
|
||||
! load-vregs
|
||||
{
|
||||
{ 1 2 3 4 5 6 7 8 }
|
||||
|
|
|
@ -26,8 +26,11 @@ IN: compiler.cfg.stacks
|
|||
finalize-stack-shuffling
|
||||
} apply-passes ;
|
||||
|
||||
: create-locs ( loc-class seq -- locs )
|
||||
[ swap new swap >>n ] with map <reversed> ;
|
||||
|
||||
: stack-locs ( loc-class n -- locs )
|
||||
iota [ swap new swap >>n ] with map <reversed> ;
|
||||
iota create-locs ;
|
||||
|
||||
: (load-vregs) ( n loc-class -- vregs )
|
||||
swap stack-locs [ peek-loc ] map ;
|
||||
|
|
Loading…
Reference in New Issue