compiler.crossref: clean up and fix bug with forgotten classes

db4
Slava Pestov 2010-02-01 17:20:08 +13:00
parent 823e2fd3e9
commit e7de95e72b
4 changed files with 20 additions and 20 deletions

View File

@ -183,9 +183,9 @@ SINGLETON: optimizing-compiler
M: optimizing-compiler update-call-sites ( class generic -- words ) M: optimizing-compiler update-call-sites ( class generic -- words )
#! Words containing call sites with inferred type 'class' #! Words containing call sites with inferred type 'class'
#! which inlined a method on 'generic' #! which inlined a method on 'generic'
compiled-generic-usage swap '[ generic-call-sites-of swap '[
nip dup classoid? nip _ 2dup [ classoid? ] both?
[ _ classes-intersect? ] [ drop f ] if [ classes-intersect? ] [ 2drop f ] if
] assoc-filter keys ; ] assoc-filter keys ;
M: optimizing-compiler recompile ( words -- alist ) M: optimizing-compiler recompile ( words -- alist )

View File

@ -9,9 +9,9 @@ SYMBOL: compiled-crossref
compiled-crossref [ H{ } clone ] initialize compiled-crossref [ H{ } clone ] initialize
SYMBOL: compiled-generic-crossref SYMBOL: generic-call-site-crossref
compiled-generic-crossref [ H{ } clone ] initialize generic-call-site-crossref [ H{ } clone ] initialize
: effect-dependencies-of ( word -- assoc ) : effect-dependencies-of ( word -- assoc )
compiled-crossref get at ; compiled-crossref get at ;
@ -37,14 +37,14 @@ compiled-generic-crossref [ H{ } clone ] initialize
[ drop _ dependencies-satisfied? not ] assoc-filter [ drop _ dependencies-satisfied? not ] assoc-filter
] { } assoc>map ; ] { } assoc>map ;
: compiled-generic-usage ( word -- assoc ) : generic-call-sites-of ( word -- assoc )
compiled-generic-crossref get at ; generic-call-site-crossref get at ;
: only-xref ( assoc -- assoc' ) : only-xref ( assoc -- assoc' )
[ drop crossref? ] { } assoc-filter-as ; [ drop crossref? ] { } assoc-filter-as ;
: set-compiled-generic-uses ( word alist -- ) : set-generic-call-sites ( word alist -- )
concat f like "compiled-generic-uses" set-word-prop ; concat f like "generic-call-sites" set-word-prop ;
: split-dependencies ( assoc -- effect-deps cond-deps def-deps ) : split-dependencies ( assoc -- effect-deps cond-deps def-deps )
[ nip effect-dependency eq? ] assoc-partition [ nip effect-dependency eq? ] assoc-partition
@ -59,12 +59,12 @@ compiled-generic-crossref [ H{ } clone ] initialize
[ (store-dependencies) ] tri-curry@ tri-curry* tri ; [ (store-dependencies) ] tri-curry@ tri-curry* tri ;
: (compiled-xref) ( word dependencies generic-dependencies -- ) : (compiled-xref) ( word dependencies generic-dependencies -- )
compiled-crossref compiled-generic-crossref compiled-crossref generic-call-site-crossref
[ get add-vertex* ] bi-curry@ bi-curry* bi ; [ get add-vertex* ] bi-curry@ bi-curry* bi ;
: compiled-xref ( word dependencies generic-dependencies -- ) : compiled-xref ( word dependencies generic-dependencies -- )
[ only-xref ] bi@ [ only-xref ] bi@
[ nip set-compiled-generic-uses ] [ nip set-generic-call-sites ]
[ drop store-dependencies ] [ drop store-dependencies ]
[ (compiled-xref) ] [ (compiled-xref) ]
3tri ; 3tri ;
@ -88,23 +88,23 @@ compiled-generic-crossref [ H{ } clone ] initialize
: (compiled-unxref) ( word dependencies variable -- ) : (compiled-unxref) ( word dependencies variable -- )
get remove-vertex* ; get remove-vertex* ;
: compiled-generic-uses ( word -- alist ) : generic-call-sites ( word -- alist )
"compiled-generic-uses" word-prop 2 <groups> ; "generic-call-sites" word-prop 2 <groups> ;
: compiled-unxref ( word -- ) : compiled-unxref ( word -- )
{ {
[ dup load-dependencies compiled-crossref (compiled-unxref) ] [ dup load-dependencies compiled-crossref (compiled-unxref) ]
[ dup compiled-generic-uses compiled-generic-crossref (compiled-unxref) ] [ dup generic-call-sites generic-call-site-crossref (compiled-unxref) ]
[ "effect-dependencies" remove-word-prop ] [ "effect-dependencies" remove-word-prop ]
[ "conditional-dependencies" remove-word-prop ] [ "conditional-dependencies" remove-word-prop ]
[ "definition-dependencies" remove-word-prop ] [ "definition-dependencies" remove-word-prop ]
[ "compiled-generic-uses" remove-word-prop ] [ "generic-call-sites" remove-word-prop ]
} cleave ; } cleave ;
: delete-compiled-xref ( word -- ) : delete-compiled-xref ( word -- )
[ compiled-unxref ] [ compiled-unxref ]
[ compiled-crossref get delete-at ] [ compiled-crossref get delete-at ]
[ compiled-generic-crossref get delete-at ] [ generic-call-site-crossref get delete-at ]
tri ; tri ;
: set-dependency-checks ( word deps -- ) : set-dependency-checks ( word deps -- )

View File

@ -127,7 +127,7 @@ IN: tools.deploy.shaker
"boa-check" "boa-check"
"coercer" "coercer"
"combination" "combination"
"compiled-generic-uses" "generic-call-sites"
"effect-dependencies" "effect-dependencies"
"definition-dependencies" "definition-dependencies"
"conditional-dependencies" "conditional-dependencies"
@ -343,7 +343,7 @@ IN: tools.deploy.shaker
classes.private:update-map classes.private:update-map
main-vocab-hook main-vocab-hook
compiler.crossref:compiled-crossref compiler.crossref:compiled-crossref
compiler.crossref:compiled-generic-crossref compiler.crossref:generic-call-site-crossref
compiler-impl compiler-impl
compiler.errors:compiler-errors compiler.errors:compiler-errors
lexer-factory lexer-factory

View File

@ -1,4 +1,4 @@
! Copyright (C) 2007, 2008 Slava Pestov. ! Copyright (C) 2007, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors words sequences math prettyprint kernel arrays USING: accessors words sequences math prettyprint kernel arrays
io io.styles namespaces assocs kernel.private strings io io.styles namespaces assocs kernel.private strings
@ -39,7 +39,7 @@ IN: tools.profiler
: profiler-usage ( word -- words ) : profiler-usage ( word -- words )
[ smart-usage [ word? ] filter ] [ smart-usage [ word? ] filter ]
[ compiled-generic-usage keys ] [ generic-call-sites-of keys ]
[ effect-dependencies-of keys ] [ effect-dependencies-of keys ]
tri 3append prune ; tri 3append prune ;