compiler.cfg.dependence: now the nodes are on the stack instead of being saved in a dynamic variable (fp++)
parent
2cfd55b864
commit
3f3cc0eb8a
|
@ -9,7 +9,6 @@ IN: compiler.cfg.dependence
|
|||
|
||||
SYMBOL: roots
|
||||
SYMBOL: node-number
|
||||
SYMBOL: nodes
|
||||
|
||||
SYMBOL: +data+
|
||||
SYMBOL: +control+
|
||||
|
@ -121,31 +120,28 @@ M: object add-control-edge 2drop ;
|
|||
] [ drop ] if ;
|
||||
|
||||
: make-trees ( nodes -- trees )
|
||||
[ [ choose-parent ] each ]
|
||||
[ [ parent>> not ] filter ] bi ;
|
||||
[ [ choose-parent ] each ] [ [ parent>> not ] filter ] bi ;
|
||||
|
||||
ERROR: node-missing-parent trees nodes ;
|
||||
ERROR: node-missing-children trees nodes ;
|
||||
|
||||
: flatten-tree ( node -- nodes )
|
||||
[ children>> [ flatten-tree ] map concat ] keep
|
||||
suffix ;
|
||||
[ children>> [ flatten-tree ] map concat ] keep suffix ;
|
||||
|
||||
: verify-parents ( trees -- trees )
|
||||
nodes get over '[ [ parent>> ] [ _ member? ] bi or ] all?
|
||||
[ nodes get node-missing-parent ] unless ;
|
||||
: verify-parents ( nodes trees -- )
|
||||
2dup '[ [ parent>> ] [ _ member? ] bi or ] all?
|
||||
[ 2drop ] [ node-missing-parent ] if ;
|
||||
|
||||
: verify-children ( trees -- trees )
|
||||
dup [ flatten-tree ] map concat
|
||||
nodes get
|
||||
: verify-children ( nodes trees -- )
|
||||
2dup [ flatten-tree ] map concat
|
||||
{ [ [ length ] same? ] [ set= ] } 2&&
|
||||
[ nodes get node-missing-children ] unless ;
|
||||
[ 2drop ] [ node-missing-children ] if ;
|
||||
|
||||
: verify-trees ( trees -- trees )
|
||||
verify-parents verify-children ;
|
||||
: verify-trees ( nodes trees -- )
|
||||
[ verify-parents ] [ verify-children ] 2bi ;
|
||||
|
||||
: build-fan-in-trees ( nodes -- )
|
||||
dup nodes set make-trees verify-trees [
|
||||
dup make-trees [ verify-trees ] keep [
|
||||
-1/0. >>parent-index
|
||||
calculate-registers drop
|
||||
] each ;
|
||||
|
|
|
@ -66,13 +66,8 @@ conditional-branch-insn
|
|||
: final-insn-start ( insns -- n )
|
||||
[ final-insn? not ] find-last drop [ 1 + ] [ 0 ] if* ;
|
||||
|
||||
! hack to get bootstrapping working
|
||||
: split-indices-int ( seq indices -- pieces )
|
||||
over length suffix 0 swap [ dup swapd 2array ] map nip
|
||||
[ first2 rot subseq ] with map ;
|
||||
|
||||
: split-insns ( insns -- pre/body/post )
|
||||
dup [ initial-insn-end ] [ final-insn-start ] bi 2array split-indices-int ;
|
||||
dup [ initial-insn-end ] [ final-insn-start ] bi 2array split-indices ;
|
||||
|
||||
: reorder-body ( body -- body' )
|
||||
[ <node> ] map
|
||||
|
|
Loading…
Reference in New Issue