From f0716b3a0d97ba1249689847204d32bc0e07cc5e Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 22 Nov 2008 22:46:57 -0600 Subject: [PATCH] 1% image size reduction by not storing empty compiled-generic-uses and compiled-uses props --- basis/compiler/compiler.factor | 4 ++-- basis/compiler/tests/redefine13.factor | 14 ++++++++++++++ basis/compiler/tests/redefine14.factor | 8 ++++++++ core/words/words.factor | 4 ++-- 4 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 basis/compiler/tests/redefine13.factor create mode 100644 basis/compiler/tests/redefine14.factor diff --git a/basis/compiler/compiler.factor b/basis/compiler/compiler.factor index a6afc4b243..e5cbd888d9 100644 --- a/basis/compiler/compiler.factor +++ b/basis/compiler/compiler.factor @@ -91,8 +91,8 @@ t compile-dependencies? set-global [ dup crossref? [ - dependencies get >alist - generic-dependencies get >alist + dependencies get + generic-dependencies get compiled-xref ] [ drop ] if ] tri ; diff --git a/basis/compiler/tests/redefine13.factor b/basis/compiler/tests/redefine13.factor new file mode 100644 index 0000000000..6f116e9f92 --- /dev/null +++ b/basis/compiler/tests/redefine13.factor @@ -0,0 +1,14 @@ +USING: math fry macros eval tools.test ; +IN: compiler.tests.redefine13 + +: breakage-word ( a b -- c ) + ; + +MACRO: breakage-macro ( a -- ) '[ _ breakage-word ] ; + +GENERIC: breakage-caller ( a -- c ) + +M: fixnum breakage-caller 2 breakage-macro ; + +: breakage ( -- obj ) 2 breakage-caller ; + +[ ] [ "IN: compiler.tests.redefine13 : breakage-word ( a b -- c ) ;" eval ] unit-test diff --git a/basis/compiler/tests/redefine14.factor b/basis/compiler/tests/redefine14.factor new file mode 100644 index 0000000000..6a04eed088 --- /dev/null +++ b/basis/compiler/tests/redefine14.factor @@ -0,0 +1,8 @@ +USING: compiler.units definitions tools.test sequences ; +IN: compiler.tests.redefine14 + +TUPLE: bad ; + +M: bad length 1 2 3 ; + +[ ] [ [ { bad length } forget ] with-compilation-unit ] unit-test diff --git a/core/words/words.factor b/core/words/words.factor index 66c60dc06e..6281e10e09 100644 --- a/core/words/words.factor +++ b/core/words/words.factor @@ -113,7 +113,7 @@ compiled-generic-crossref global [ H{ } assoc-like ] change-at bi* 2bi ; : compiled-xref ( word dependencies generic-dependencies -- ) - [ [ drop crossref? ] assoc-filter ] bi@ + [ [ drop crossref? ] assoc-filter >alist f like ] bi@ [ over ] dip [ "compiled-uses" compiled-crossref (compiled-xref) ] [ "compiled-generic-uses" compiled-generic-crossref (compiled-xref) ] @@ -121,7 +121,7 @@ compiled-generic-crossref global [ H{ } assoc-like ] change-at : (compiled-unxref) ( word word-prop variable -- ) [ [ [ dupd word-prop ] dip get remove-vertex* ] 2curry ] - [ drop [ f swap set-word-prop ] curry ] + [ drop [ remove-word-prop ] curry ] 2bi bi ; : compiled-unxref ( word -- )