compiler.crossref: clean up and fix bug with forgotten classes
parent
823e2fd3e9
commit
e7de95e72b
|
@ -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 )
|
||||||
|
|
|
@ -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 -- )
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue