Remove "compiled-status" word prop and simplify associated machinery

db4
Slava Pestov 2009-04-21 03:23:11 -05:00
parent b1d0066baa
commit a9b4a724a4
5 changed files with 30 additions and 37 deletions

View File

@ -28,23 +28,14 @@ SYMBOL: compiled
: maybe-compile ( word -- ) : maybe-compile ( word -- )
dup optimized>> [ drop ] [ queue-compile ] if ; dup optimized>> [ drop ] [ queue-compile ] if ;
SYMBOLS: +optimized+ +unoptimized+ ; : recompile-callers? ( word -- ? )
changed-effects get key? ;
: ripple-up ( words -- ) : recompile-callers ( words -- )
dup "compiled-status" word-prop +unoptimized+ eq? dup recompile-callers? [
[ usage [ word? ] filter ] [ compiled-usage keys ] if [ usage [ word? ] filter ] [ compiled-usage keys ] bi
[ queue-compile ] each ; [ [ queue-compile ] each ] bi@
] [ drop ] if ;
: ripple-up? ( status word -- ? )
[
[ nip changed-effects get key? ]
[ "compiled-status" word-prop eq? not ] 2bi or
] keep "compiled-status" word-prop and ;
: save-compiled-status ( word status -- )
[ over ripple-up? [ ripple-up ] [ drop ] if ]
[ "compiled-status" set-word-prop ]
2bi ;
: start ( word -- ) : start ( word -- )
"trace-compilation" get [ dup name>> print flush ] when "trace-compilation" get [ dup name>> print flush ] when
@ -55,20 +46,19 @@ SYMBOLS: +optimized+ +unoptimized+ ;
: ignore-error? ( word error -- ? ) : ignore-error? ( word error -- ? )
[ [
{ {
[ inline? ]
[ macro? ] [ macro? ]
[ "no-compile" word-prop ] [ inline? ]
[ "special" word-prop ] [ "special" word-prop ]
[ "no-compile" word-prop ]
} 1|| } 1||
] [ error-type +compiler-warning+ eq? ] bi* and ; ] [ error-type +compiler-warning+ eq? ] bi* and ;
: (fail) ( word compiled -- * ) : (fail) ( word compiled -- * )
swap swap
[ recompile-callers ]
[ compiled-unxref ] [ compiled-unxref ]
[ compiled get set-at ] [ compiled get set-at ]
[ +unoptimized+ save-compiled-status ] tri return ;
tri
return ;
: not-compiled-def ( word error -- def ) : not-compiled-def ( word error -- def )
'[ _ _ not-compiled ] [ ] like ; '[ _ _ not-compiled ] [ ] like ;
@ -106,11 +96,10 @@ t compile-dependencies? set-global
] each ; ] each ;
: finish ( word -- ) : finish ( word -- )
[ +optimized+ save-compiled-status ] [ recompile-callers ]
[ compiled-unxref ] [ compiled-unxref ]
[ [
dup crossref? dup crossref? [
[
dependencies get dependencies get
generic-dependencies get generic-dependencies get
compiled-xref compiled-xref

View File

@ -12,10 +12,11 @@ IN: macros
PRIVATE> PRIVATE>
: define-macro ( word definition effect -- ) : define-macro ( word definition effect -- )
real-macro-effect real-macro-effect {
[ [ memoize-quot [ call ] append ] keep define-declared ] [ [ memoize-quot [ call ] append ] keep define-declared ]
[ drop "macro" set-word-prop ] [ drop "macro" set-word-prop ]
3bi ; [ 2drop changed-effect ]
} 3cleave ;
SYNTAX: MACRO: (:) define-macro ; SYNTAX: MACRO: (:) define-macro ;

View File

@ -99,7 +99,6 @@ IN: tools.deploy.shaker
"boa-check" "boa-check"
"coercer" "coercer"
"combination" "combination"
"compiled-status"
"compiled-generic-uses" "compiled-generic-uses"
"compiled-uses" "compiled-uses"
"constraints" "constraints"

View File

@ -19,9 +19,6 @@ SYMBOL: changed-definitions
SYMBOL: changed-effects SYMBOL: changed-effects
: changed-effect ( word -- )
dup changed-effects get set-in-unit ;
SYMBOL: changed-generics SYMBOL: changed-generics
SYMBOL: outdated-generics SYMBOL: outdated-generics

View File

@ -138,12 +138,15 @@ M: word subwords drop f ;
>>def >>def
dup crossref? [ dup xref ] when drop ; dup crossref? [ dup xref ] when drop ;
: changed-effect ( word -- )
[ dup changed-effects get set-in-unit ]
[ dup primitive? [ drop ] [ changed-definition ] if ] bi ;
: set-stack-effect ( effect word -- ) : set-stack-effect ( effect word -- )
2dup "declared-effect" word-prop = [ 2drop ] [ 2dup "declared-effect" word-prop = [ 2drop ] [
swap [ nip changed-effect ]
[ drop changed-effect ] [ nip subwords [ changed-effect ] each ]
[ "declared-effect" set-word-prop ] [ swap "declared-effect" set-word-prop ]
[ drop dup primitive? [ drop ] [ changed-definition ] if ]
2tri 2tri
] if ; ] if ;
@ -151,7 +154,11 @@ M: word subwords drop f ;
[ nip swap set-stack-effect ] [ drop define ] 3bi ; [ nip swap set-stack-effect ] [ drop define ] 3bi ;
: make-inline ( word -- ) : make-inline ( word -- )
t "inline" set-word-prop ; dup inline? [ drop ] [
[ t "inline" set-word-prop ]
[ changed-effect ]
bi
] if ;
: make-recursive ( word -- ) : make-recursive ( word -- )
t "recursive" set-word-prop ; t "recursive" set-word-prop ;