]> gitweb.factorcode.org Git - factor.git/commitdiff
compiler.cfg.stacks.*: create-locs, word for creating stack locations
authorBjörn Lindqvist <bjourne@gmail.com>
Sat, 2 May 2015 22:14:14 +0000 (00:14 +0200)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sun, 10 May 2015 03:04:21 +0000 (20:04 -0700)
from a sequence

basis/compiler/cfg/stacks/clearing/clearing-tests.factor
basis/compiler/cfg/stacks/clearing/clearing.factor
basis/compiler/cfg/stacks/stacks-tests.factor
basis/compiler/cfg/stacks/stacks.factor

index bbac72815666b4fedf32e63037b7246beacd4f63..1d84dfe243e8e10b31933fccd811287dda17a215 100644 (file)
@@ -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 } }
     }
 } [
index e7d789f856ef88759b054c843a48cf6156dcece9..cb33617526bff66066581f9437960ba427e853d4 100644 (file)
@@ -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 -- ? )
index 76f9b00c2a1fa173c3321129e4a99fe7573ec31a..dc176b27f72156c545c9446ab7691a90f3b79a1e 100644 (file)
@@ -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 }
index 8c6483f48dcfc933e250baba74b5fa12e8dbc162..96619f74320b512b95f917baea6185554b8900e2 100644 (file)
@@ -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 ;