Skip to content

Commit

Permalink
tools.deploy.shaker: more timid global stripping
Browse files Browse the repository at this point in the history
Strip globals by replacing their value with "f". The list of globals to strip was written with the assumption that the stripped globals would get restored like normal hashtable keys when accessed. This isn't valid anymore with the globals optimization, since creating a new box breaks the foldable invariant between a global name and its associated box. Need to go through the list of globals to strip and find the ones that actually can be entirely removed as opposed to just reset to f. Fixes factor#445. Fixes factor#446.
  • Loading branch information
jckarter committed Dec 13, 2011
1 parent f15ef32 commit a6b4d30
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions basis/tools/deploy/shaker/shaker.factor
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ sets vectors quotations byte-arrays sorting compiler.units
definitions generic generic.standard generic.single
tools.deploy.config combinators combinators.private classes
vocabs.loader.private classes.builtin slots.private grouping
command-line io.pathnames ;
command-line io.pathnames namespaces.private ;
QUALIFIED: bootstrap.stage2
QUALIFIED: classes.private
QUALIFIED: compiler.crossref
Expand Down Expand Up @@ -398,12 +398,14 @@ IN: tools.deploy.shaker
"windows-messages" "windows.messages" lookup-word [ , ] when*
] { } make ;

: strip-global? ( name stripped-globals -- ? )
'[ _ member? ] [ string? ] bi or ;

: strip-globals ( stripped-globals -- )
strip-globals? [
"Stripping globals" show
global boxes>> swap
'[ drop _ member? not ] assoc-filter!
[ drop string? not ] assoc-filter! drop ! strip CLI args
'[ swap _ strip-global? [ f swap value<< ] [ drop ] if ] assoc-each
] [ drop ] if ;

: strip-c-io ( -- )
Expand Down

0 comments on commit a6b4d30

Please sign in to comment.