From 13f920babb333a422db85f154e371be1a495b75a Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 29 Jan 2010 22:29:55 +1300 Subject: [PATCH] Add some utility words to stack-checker.dependencies in preparation for a refactoring --- basis/compiler/compiler.factor | 6 +++--- basis/compiler/tree/cleanup/cleanup.factor | 4 ++-- .../tree/propagation/known-words/known-words.factor | 2 +- basis/compiler/tree/propagation/simple/simple.factor | 4 ++-- .../tree/propagation/transforms/transforms.factor | 4 ++-- basis/stack-checker/backend/backend.factor | 2 +- basis/stack-checker/dependencies/dependencies.factor | 9 +++++++++ basis/stack-checker/inlining/inlining.factor | 2 +- basis/stack-checker/known-words/known-words.factor | 2 +- basis/stack-checker/transforms/transforms.factor | 2 +- 10 files changed, 23 insertions(+), 14 deletions(-) diff --git a/basis/compiler/compiler.factor b/basis/compiler/compiler.factor index 90197b207c..2bdff71781 100644 --- a/basis/compiler/compiler.factor +++ b/basis/compiler/compiler.factor @@ -38,9 +38,9 @@ SYMBOL: compiled : recompile-callers? ( word -- ? ) changed-effects get key? ; -: recompile-callers ( words -- ) - #! If a word's stack effect changed, recompile all words that - #! have compiled calls to it. +: recompile-callers ( word -- ) + #! 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 ; diff --git a/basis/compiler/tree/cleanup/cleanup.factor b/basis/compiler/tree/cleanup/cleanup.factor index 74353df483..b19c99c360 100644 --- a/basis/compiler/tree/cleanup/cleanup.factor +++ b/basis/compiler/tree/cleanup/cleanup.factor @@ -60,7 +60,7 @@ GENERIC: cleanup* ( node -- node/nodes ) : record-folding ( #call -- ) dup word>> predicate? [ record-predicate-folding ] - [ word>> inlined-dependency depends-on ] + [ word>> depends-on-definition ] if ; : cleanup-folding ( #call -- nodes ) @@ -77,7 +77,7 @@ GENERIC: cleanup* ( node -- node/nodes ) : record-inlining ( #call -- ) dup method>> [ add-method-dependency ] - [ word>> inlined-dependency depends-on ] if ; + [ word>> depends-on-definition ] if ; : cleanup-inlining ( #call -- nodes ) [ record-inlining ] [ body>> cleanup ] bi ; diff --git a/basis/compiler/tree/propagation/known-words/known-words.factor b/basis/compiler/tree/propagation/known-words/known-words.factor index 252c5d892b..55629507ab 100644 --- a/basis/compiler/tree/propagation/known-words/known-words.factor +++ b/basis/compiler/tree/propagation/known-words/known-words.factor @@ -318,7 +318,7 @@ generic-comparison-ops [ dup literal>> class? [ literal>> - [ conditional-dependency depends-on ] + [ depends-on-conditionally ] [ predicate-output-infos ] bi ] [ 2drop object-info ] if diff --git a/basis/compiler/tree/propagation/simple/simple.factor b/basis/compiler/tree/propagation/simple/simple.factor index da973e785c..ccfd6ffabd 100644 --- a/basis/compiler/tree/propagation/simple/simple.factor +++ b/basis/compiler/tree/propagation/simple/simple.factor @@ -36,7 +36,7 @@ M: #declare propagate-before #! classes mentioned in the declaration are redefined, since #! now we're making assumptions but their definitions. declaration>> [ - [ conditional-dependency depends-on ] + [ depends-on-conditionally ] [ swap refine-value-info ] bi ] assoc-each ; @@ -111,7 +111,7 @@ M: #declare propagate-before #! class definition itself. [ in-d>> first value-info ] [ "predicating" word-prop ] bi* - [ nip conditional-dependency depends-on ] + [ nip depends-on-conditionally ] [ predicate-output-infos 1array ] 2bi ; : default-output-value-infos ( #call word -- infos ) diff --git a/basis/compiler/tree/propagation/transforms/transforms.factor b/basis/compiler/tree/propagation/transforms/transforms.factor index 414c553290..3f6a200534 100644 --- a/basis/compiler/tree/propagation/transforms/transforms.factor +++ b/basis/compiler/tree/propagation/transforms/transforms.factor @@ -163,7 +163,7 @@ ERROR: bad-partial-eval quot word ; : inline-new ( class -- quot/f ) dup tuple-class? [ - dup conditional-dependency depends-on + dup depends-on-conditionally [ all-slots [ initial>> literalize ] map ] [ tuple-layout '[ _ ] ] bi append >quotation @@ -293,6 +293,6 @@ CONSTANT: lookup-table-at-max 256 ! calls when a C type is redefined \ heap-size [ dup word? [ - [ inlined-dependency depends-on ] [ heap-size '[ _ ] ] bi + [ depends-on-definition ] [ heap-size '[ _ ] ] bi ] [ drop f ] if ] 1 define-partial-eval diff --git a/basis/stack-checker/backend/backend.factor b/basis/stack-checker/backend/backend.factor index b2a99f0731..8de930a6cd 100644 --- a/basis/stack-checker/backend/backend.factor +++ b/basis/stack-checker/backend/backend.factor @@ -74,7 +74,7 @@ GENERIC: apply-object ( obj -- ) M: wrapper apply-object wrapped>> - [ dup word? [ called-dependency depends-on ] [ drop ] if ] + [ dup word? [ depends-on-effect ] [ drop ] if ] [ push-literal ] bi ; diff --git a/basis/stack-checker/dependencies/dependencies.factor b/basis/stack-checker/dependencies/dependencies.factor index 97c151ac9d..004c1dd07d 100644 --- a/basis/stack-checker/dependencies/dependencies.factor +++ b/basis/stack-checker/dependencies/dependencies.factor @@ -26,6 +26,15 @@ SYMBOLS: inlined-dependency conditional-dependency flushed-dependency called-dep ] [ 3drop ] if ] if ; +: depends-on-effect ( word -- ) + called-dependency depends-on ; + +: depends-on-definition ( word -- ) + inlined-dependency depends-on ; + +: depends-on-conditionally ( word -- ) + conditional-dependency depends-on ; + ! Generic words that the current quotation depends on SYMBOL: generic-dependencies diff --git a/basis/stack-checker/inlining/inlining.factor b/basis/stack-checker/inlining/inlining.factor index 20d61b9c37..4197aa00a2 100644 --- a/basis/stack-checker/inlining/inlining.factor +++ b/basis/stack-checker/inlining/inlining.factor @@ -140,7 +140,7 @@ SYMBOL: enter-out : inline-word ( word -- ) commit-literals - [ inlined-dependency depends-on ] + [ depends-on-definition ] [ dup inline-recursive-label [ call-recursive-inline-word diff --git a/basis/stack-checker/known-words/known-words.factor b/basis/stack-checker/known-words/known-words.factor index 6ac668b031..966a273f20 100644 --- a/basis/stack-checker/known-words/known-words.factor +++ b/basis/stack-checker/known-words/known-words.factor @@ -273,7 +273,7 @@ M: bad-executable summary \ clear t "no-compile" set-word-prop : non-inline-word ( word -- ) - dup called-dependency depends-on + dup depends-on-effect { { [ dup "shuffle" word-prop ] [ infer-shuffle-word ] } { [ dup "special" word-prop ] [ infer-special ] } diff --git a/basis/stack-checker/transforms/transforms.factor b/basis/stack-checker/transforms/transforms.factor index 5426ac9e19..bb68a3f5c9 100644 --- a/basis/stack-checker/transforms/transforms.factor +++ b/basis/stack-checker/transforms/transforms.factor @@ -140,7 +140,7 @@ IN: stack-checker.transforms ! Constructors \ boa [ dup tuple-class? [ - dup conditional-dependency depends-on + dup depends-on-conditionally [ "boa-check" word-prop [ ] or ] [ tuple-layout '[ _ ] ] bi append