From ac95c024f3584b0e87eb623af23bf54fff56995e Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sun, 10 Mar 2013 10:06:48 -0700 Subject: [PATCH] compiler.cfg.loop-detection: more use of hash-sets. --- .../cfg/loop-detection/loop-detection.factor | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/basis/compiler/cfg/loop-detection/loop-detection.factor b/basis/compiler/cfg/loop-detection/loop-detection.factor index 46fb643651..7c01e4444a 100644 --- a/basis/compiler/cfg/loop-detection/loop-detection.factor +++ b/basis/compiler/cfg/loop-detection/loop-detection.factor @@ -12,12 +12,10 @@ SYMBOL: loops ( header index -- loop ) - HS{ } clone H{ } clone natural-loop boa ; + HS{ } clone HS{ } clone natural-loop boa ; : lookup-header ( header -- loop ) - loops get [ - loops get assoc-size - ] cache ; + loops get dup '[ _ assoc-size ] cache ; SYMBOLS: visited active ; @@ -45,8 +43,8 @@ DEFER: find-loop-headers SYMBOL: work-list : process-loop-block ( bb loop -- ) - 2dup blocks>> key? [ 2drop ] [ - [ blocks>> conjoin ] [ + 2dup blocks>> in? [ 2drop ] [ + [ blocks>> adjoin ] [ 2dup header>> eq? [ 2drop ] [ drop predecessors>> work-list get push-all-front ] if @@ -64,7 +62,7 @@ SYMBOL: loop-nesting : compute-loop-nesting ( -- ) loops get H{ } clone [ - [ values ] dip '[ blocks>> values [ _ inc-at ] each ] each + [ values ] dip '[ blocks>> members [ _ inc-at ] each ] each ] keep loop-nesting set ; : detect-loops ( cfg -- cfg' )