compiler.cfg.linear-scan.assignment: better vregs>regs
parent
754f52d399
commit
e426e5c339
|
@ -66,7 +66,7 @@ HELP: vreg>reg
|
|||
{ $see-also lookup-spill-slot pending-interval-assoc } ;
|
||||
|
||||
HELP: vregs>regs
|
||||
{ $values { "vregs" "a sequence of virtual registers" } { "assoc" assoc } }
|
||||
{ $values { "assoc" "an " { $link assoc } " (set) of virtual registers" } { "assoc" assoc } }
|
||||
{ $description "Creates a mapping of virtual registers to registers." } ;
|
||||
|
||||
HELP: vreg>spill-slot
|
||||
|
|
|
@ -151,10 +151,10 @@ IN: compiler.cfg.linear-scan.assignment.tests
|
|||
] [ bad-vreg? ] must-fail-with
|
||||
|
||||
! vregs>regs
|
||||
{ H{ { 44 RBX } { 33 RAX } } } [
|
||||
{ { { 33 RAX } { 44 RBX } } } [
|
||||
{ { 33 int-rep 33 f } { 44 int-rep 44 f } } setup-vreg-spills
|
||||
H{ { 33 RAX } { 44 RBX } } pending-interval-assoc set
|
||||
{ 33 44 } vregs>regs
|
||||
{ { 33 33 } { 44 44 } } vregs>regs
|
||||
] unit-test
|
||||
|
||||
|
||||
|
|
|
@ -35,8 +35,8 @@ ERROR: not-spilled-error vreg ;
|
|||
dup vreg>reg dup spill-slot?
|
||||
[ nip ] [ drop leader not-spilled-error ] if ;
|
||||
|
||||
: vregs>regs ( vregs -- assoc )
|
||||
[ dup vreg>reg ] H{ } map>assoc ;
|
||||
: vregs>regs ( assoc -- assoc' )
|
||||
[ vreg>reg ] assoc-map ;
|
||||
|
||||
SYMBOL: unhandled-intervals
|
||||
|
||||
|
@ -46,7 +46,7 @@ SYMBOL: machine-live-ins
|
|||
machine-live-ins get at ;
|
||||
|
||||
: compute-live-in ( bb -- )
|
||||
[ live-in keys vregs>regs ] keep machine-live-ins get set-at ;
|
||||
[ live-in vregs>regs ] keep machine-live-ins get set-at ;
|
||||
|
||||
SYMBOL: machine-edge-live-ins
|
||||
|
||||
|
@ -54,7 +54,7 @@ SYMBOL: machine-edge-live-ins
|
|||
machine-edge-live-ins get at at ;
|
||||
|
||||
: compute-edge-live-in ( bb -- )
|
||||
[ edge-live-ins get at [ keys vregs>regs ] assoc-map ] keep
|
||||
[ edge-live-ins get at [ vregs>regs ] assoc-map ] keep
|
||||
machine-edge-live-ins get set-at ;
|
||||
|
||||
SYMBOL: machine-live-outs
|
||||
|
@ -63,7 +63,7 @@ SYMBOL: machine-live-outs
|
|||
machine-live-outs get at ;
|
||||
|
||||
: compute-live-out ( bb -- )
|
||||
[ live-out keys vregs>regs ] keep machine-live-outs get set-at ;
|
||||
[ live-out vregs>regs ] keep machine-live-outs get set-at ;
|
||||
|
||||
: insert-spill ( live-interval -- )
|
||||
[ reg>> ] [ spill-rep>> ] [ spill-to>> ] tri ##spill, ;
|
||||
|
|
Loading…
Reference in New Issue