From fa4f7d8ccf1df58bc20d470a9cf61f74ccd0f763 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 30 Jan 2010 05:28:55 +1300 Subject: [PATCH] Clean up some code in preparation for a refactoring --- basis/compiler/compiler.factor | 2 +- basis/compiler/crossref/crossref.factor | 14 +++++---- .../dependencies/dependencies-tests.factor | 29 ------------------- .../dependencies/dependencies.factor | 14 ++++----- basis/tools/profiler/profiler.factor | 2 +- 5 files changed, 17 insertions(+), 44 deletions(-) diff --git a/basis/compiler/compiler.factor b/basis/compiler/compiler.factor index cce33c2f8d..0fb9231666 100644 --- a/basis/compiler/compiler.factor +++ b/basis/compiler/compiler.factor @@ -42,7 +42,7 @@ SYMBOL: compiled #! If a word's stack effect changed, recompile all words #! that have compiled calls to it. dup recompile-callers? - [ compiled-usage keys [ queue-compile ] each ] [ drop ] if ; + [ effect-dependencies-of keys [ queue-compile ] each ] [ drop ] if ; : compiler-message ( string -- ) "trace-compilation" get [ global [ print flush ] bind ] [ drop ] if ; diff --git a/basis/compiler/crossref/crossref.factor b/basis/compiler/crossref/crossref.factor index 67c5a6f1ea..518b05d89d 100644 --- a/basis/compiler/crossref/crossref.factor +++ b/basis/compiler/crossref/crossref.factor @@ -13,15 +13,18 @@ SYMBOL: compiled-generic-crossref compiled-generic-crossref [ H{ } clone ] initialize -: compiled-usage ( word -- assoc ) +: effect-dependencies-of ( word -- assoc ) compiled-crossref get at ; -: (compiled-usages) ( word -- assoc ) - compiled-usage [ nip inlined-dependency dependency>= ] assoc-filter ; +: definition-dependencies-of ( word -- assoc ) + effect-dependencies-of [ nip definition-dependency dependency>= ] assoc-filter ; + +: conditional-dependencies-of ( word -- assoc ) + effect-dependencies-of [ nip conditional-dependency dependency>= ] assoc-filter ; : compiled-usages ( assoc -- assocs ) [ drop word? ] assoc-filter - [ [ drop (compiled-usages) ] { } assoc>map ] keep suffix ; + [ [ drop definition-dependencies-of ] { } assoc>map ] keep suffix ; : dependencies-satisfied? ( word cache -- ? ) [ "dependency-checks" word-prop ] dip @@ -30,8 +33,7 @@ compiled-generic-crossref [ H{ } clone ] initialize : outdated-conditional-usages ( assoc -- assocs ) H{ } clone '[ drop - compiled-usage - [ nip conditional-dependency dependency>= ] assoc-filter + conditional-dependencies-of [ drop _ dependencies-satisfied? not ] assoc-filter ] { } assoc>map ; diff --git a/basis/stack-checker/dependencies/dependencies-tests.factor b/basis/stack-checker/dependencies/dependencies-tests.factor index 2b6686e247..8b13789179 100644 --- a/basis/stack-checker/dependencies/dependencies-tests.factor +++ b/basis/stack-checker/dependencies/dependencies-tests.factor @@ -1,30 +1 @@ -IN: stack-checker.dependencies.tests -USING: tools.test stack-checker.dependencies words kernel namespaces -definitions ; -: computing-dependencies ( quot -- dependencies ) - H{ } clone [ dependencies rot with-variable ] keep ; - inline - -SYMBOL: a -SYMBOL: b - -[ ] [ a called-dependency depends-on ] unit-test - -[ H{ { a called-dependency } } ] [ - [ a called-dependency depends-on ] computing-dependencies -] unit-test - -[ H{ { a called-dependency } { b inlined-dependency } } ] [ - [ - a called-dependency depends-on b inlined-dependency depends-on - ] computing-dependencies -] unit-test - -[ H{ { a inlined-dependency } { b inlined-dependency } } ] [ - [ - a inlined-dependency depends-on - a called-dependency depends-on - b inlined-dependency depends-on - ] computing-dependencies -] unit-test diff --git a/basis/stack-checker/dependencies/dependencies.factor b/basis/stack-checker/dependencies/dependencies.factor index 5a5cbcbd6f..a2ae1f1bc9 100644 --- a/basis/stack-checker/dependencies/dependencies.factor +++ b/basis/stack-checker/dependencies/dependencies.factor @@ -8,17 +8,17 @@ IN: stack-checker.dependencies ! Words that the current quotation depends on SYMBOL: dependencies -SYMBOLS: inlined-dependency conditional-dependency flushed-dependency called-dependency ; +SYMBOLS: effect-dependency conditional-dependency definition-dependency ; : index>= ( obj1 obj2 seq -- ? ) [ index ] curry bi@ >= ; : dependency>= ( how1 how2 -- ? ) - { called-dependency conditional-dependency flushed-dependency inlined-dependency } + { effect-dependency conditional-dependency definition-dependency } index>= ; : strongest-dependency ( how1 how2 -- how ) - [ called-dependency or ] bi@ [ dependency>= ] most ; + [ effect-dependency or ] bi@ [ dependency>= ] most ; : depends-on ( word how -- ) over primitive? [ 2drop ] [ @@ -28,14 +28,14 @@ SYMBOLS: inlined-dependency conditional-dependency flushed-dependency called-dep ] if ; : depends-on-effect ( word -- ) - called-dependency depends-on ; - -: depends-on-definition ( word -- ) - inlined-dependency depends-on ; + effect-dependency depends-on ; : depends-on-conditionally ( word -- ) conditional-dependency depends-on ; +: depends-on-definition ( word -- ) + definition-dependency depends-on ; + ! Generic words that the current quotation depends on SYMBOL: generic-dependencies diff --git a/basis/tools/profiler/profiler.factor b/basis/tools/profiler/profiler.factor index 8279a90514..76d62cec3a 100644 --- a/basis/tools/profiler/profiler.factor +++ b/basis/tools/profiler/profiler.factor @@ -40,7 +40,7 @@ IN: tools.profiler : profiler-usage ( word -- words ) [ smart-usage [ word? ] filter ] [ compiled-generic-usage keys ] - [ compiled-usage keys ] + [ effect-dependencies-of keys ] tri 3append prune ; : usage-counters ( word -- alist )