From 3f3cc0eb8a36aa9991a63fec967cdfe341c18a9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Sun, 9 Nov 2014 01:46:04 +0100 Subject: [PATCH] compiler.cfg.dependence: now the nodes are on the stack instead of being saved in a dynamic variable (fp++) --- .../compiler/cfg/dependence/dependence.factor | 26 ++++++++----------- .../compiler/cfg/scheduling/scheduling.factor | 7 +---- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/basis/compiler/cfg/dependence/dependence.factor b/basis/compiler/cfg/dependence/dependence.factor index 3ba6a2b9b1..9e0aca0f46 100644 --- a/basis/compiler/cfg/dependence/dependence.factor +++ b/basis/compiler/cfg/dependence/dependence.factor @@ -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 ; diff --git a/basis/compiler/cfg/scheduling/scheduling.factor b/basis/compiler/cfg/scheduling/scheduling.factor index 7079a178f0..ed847aed51 100644 --- a/basis/compiler/cfg/scheduling/scheduling.factor +++ b/basis/compiler/cfg/scheduling/scheduling.factor @@ -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' ) [ ] map