compiler.cfg.linear-scan.*: make it so cfg is given as an argument to next-spill-slot
parent
67e7874e91
commit
cfe4fec574
|
@ -49,8 +49,8 @@ HELP: init-allocator
|
||||||
{ $see-also reg-class } ;
|
{ $see-also reg-class } ;
|
||||||
|
|
||||||
HELP: next-spill-slot
|
HELP: next-spill-slot
|
||||||
{ $values { "size" "number of bytes required" } { "spill-slot" spill-slot } }
|
{ $values { "size" "number of bytes required" } { "cfg" cfg } { "spill-slot" spill-slot } }
|
||||||
{ $description "Creates a new " { $link spill-slot } " of the given size and also allocates space in the " { $link cfg } " in the 'cfg' dynamic variable for it." } ;
|
{ $description "Creates a new " { $link spill-slot } " of the given size and also allocates space in the " { $link cfg } " in the cfg for it." } ;
|
||||||
|
|
||||||
HELP: progress
|
HELP: progress
|
||||||
{ $var-description "Start index of current live interval. We ensure that all live intervals added to the unhandled set have a start index strictly greater than this one. This ensures that we can catch infinite loop situations. We also ensure that all live intervals added to the handled set have an end index strictly smaller than this one. This helps catch bugs." }
|
{ $var-description "Start index of current live interval. We ensure that all live intervals added to the unhandled set have a start index strictly greater than this one. This ensures that we can catch infinite loop situations. We also ensure that all live intervals added to the handled set have an end index strictly smaller than this one. This helps catch bugs." }
|
||||||
|
|
|
@ -2,8 +2,8 @@ USING: accessors assocs combinators.extras compiler.cfg
|
||||||
compiler.cfg.instructions compiler.cfg.linear-scan.allocation
|
compiler.cfg.instructions compiler.cfg.linear-scan.allocation
|
||||||
compiler.cfg.linear-scan.allocation.state
|
compiler.cfg.linear-scan.allocation.state
|
||||||
compiler.cfg.linear-scan.live-intervals compiler.cfg.registers
|
compiler.cfg.linear-scan.live-intervals compiler.cfg.registers
|
||||||
compiler.cfg.utilities cpu.architecture cpu.x86.assembler.operands heaps
|
compiler.cfg.utilities cpu.architecture cpu.x86.assembler.operands fry
|
||||||
kernel layouts literals namespaces sequences system tools.test ;
|
heaps kernel layouts literals namespaces sequences system tools.test ;
|
||||||
IN: compiler.cfg.linear-scan.allocation.state.tests
|
IN: compiler.cfg.linear-scan.allocation.state.tests
|
||||||
|
|
||||||
! active-intervals-for
|
! active-intervals-for
|
||||||
|
@ -128,14 +128,11 @@ ${ cell } [
|
||||||
|
|
||||||
! next-spill-slot
|
! next-spill-slot
|
||||||
{
|
{
|
||||||
|
T{ cfg { spill-area-size 16 } }
|
||||||
T{ spill-slot f 0 }
|
T{ spill-slot f 0 }
|
||||||
T{ spill-slot f 8 }
|
T{ spill-slot f 8 }
|
||||||
T{ cfg { spill-area-size 16 } }
|
|
||||||
} [
|
} [
|
||||||
H{ } clone spill-slots set
|
T{ cfg { spill-area-size 0 } } dup '[ 8 _ next-spill-slot ] twice
|
||||||
T{ cfg { spill-area-size 0 } } cfg set
|
|
||||||
[ 8 next-spill-slot ] twice
|
|
||||||
cfg get
|
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
! >unhandled-min-heap
|
! >unhandled-min-heap
|
||||||
|
|
|
@ -113,10 +113,8 @@ ERROR: register-already-used live-interval ;
|
||||||
: reg-class-assoc ( quot -- assoc )
|
: reg-class-assoc ( quot -- assoc )
|
||||||
[ reg-classes ] dip { } map>assoc ; inline
|
[ reg-classes ] dip { } map>assoc ; inline
|
||||||
|
|
||||||
: next-spill-slot ( size -- spill-slot )
|
: next-spill-slot ( size cfg -- spill-slot )
|
||||||
cfg get
|
[ swap [ align dup ] [ + ] bi ] change-spill-area-size drop <spill-slot> ;
|
||||||
[ swap [ align dup ] [ + ] bi ] change-spill-area-size drop
|
|
||||||
<spill-slot> ;
|
|
||||||
|
|
||||||
: align-spill-area ( align cfg -- )
|
: align-spill-area ( align cfg -- )
|
||||||
[ max ] change-spill-area-align drop ;
|
[ max ] change-spill-area-align drop ;
|
||||||
|
@ -126,7 +124,7 @@ SYMBOL: spill-slots
|
||||||
: assign-spill-slot ( coalesced-vreg rep -- spill-slot )
|
: assign-spill-slot ( coalesced-vreg rep -- spill-slot )
|
||||||
rep-size
|
rep-size
|
||||||
[ cfg get align-spill-area ]
|
[ cfg get align-spill-area ]
|
||||||
[ spill-slots get [ nip next-spill-slot ] 2cache ]
|
[ spill-slots get [ nip cfg get next-spill-slot ] 2cache ]
|
||||||
bi ;
|
bi ;
|
||||||
|
|
||||||
: lookup-spill-slot ( coalesced-vreg rep -- spill-slot )
|
: lookup-spill-slot ( coalesced-vreg rep -- spill-slot )
|
||||||
|
|
|
@ -29,7 +29,7 @@ SYMBOL: temp-spills
|
||||||
|
|
||||||
: temp-spill ( rep -- spill-slot )
|
: temp-spill ( rep -- spill-slot )
|
||||||
rep-size temp-spills get
|
rep-size temp-spills get
|
||||||
[ next-spill-slot ] cache ;
|
[ cfg get next-spill-slot ] cache ;
|
||||||
|
|
||||||
SYMBOL: temp-locations
|
SYMBOL: temp-locations
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue