diff --git a/basis/bootstrap/image/image.factor b/basis/bootstrap/image/image.factor index 90b4c3ae6f..941b4149fa 100644 --- a/basis/bootstrap/image/image.factor +++ b/basis/bootstrap/image/image.factor @@ -554,12 +554,19 @@ M: quotation ' : fixup-header ( -- ) heap-size data-heap-size-offset fixup ; +: build-generics ( -- ) + [ + all-words + [ generic? ] filter + [ make-generic ] each + ] with-compilation-unit ; + : build-image ( -- image ) 800000 image set 20000 objects set emit-image-header t, 0, 1, -1, "Building generic words..." print flush - remake-generics + build-generics "Serializing words..." print flush emit-words "Serializing JIT data..." print flush diff --git a/basis/vocabs/prettyprint/prettyprint.factor b/basis/vocabs/prettyprint/prettyprint.factor index 40493e4e99..2cdec0d382 100644 --- a/basis/vocabs/prettyprint/prettyprint.factor +++ b/basis/vocabs/prettyprint/prettyprint.factor @@ -64,12 +64,15 @@ M: rename pprint-qualified ( rename -- ) tri ] with-pprint ; +: filter-interesting ( seq -- seq' ) + [ [ vocab? ] [ extra-words? ] bi or not ] filter ; + PRIVATE> : (pprint-manifest ( manifest -- quots ) [ [ search-vocabs>> [ '[ _ pprint-using ] , ] unless-empty ] - [ qualified-vocabs>> [ extra-words? not ] filter [ '[ _ pprint-qualified ] , ] each ] + [ qualified-vocabs>> filter-interesting [ '[ _ pprint-qualified ] , ] each ] [ current-vocab>> [ '[ _ pprint-in ] , ] when* ] tri ] { } make ; diff --git a/core/bootstrap/primitives.factor b/core/bootstrap/primitives.factor index 2288b89cf4..67107c8c9a 100644 --- a/core/bootstrap/primitives.factor +++ b/core/bootstrap/primitives.factor @@ -31,32 +31,31 @@ architecture get { ! Now we have ( syntax-quot arch-quot layouts-quot ) on the stack ! Bring up a bare cross-compiling vocabulary. -"syntax" vocab vocab-words bootstrap-syntax set { - dictionary - new-classes - changed-definitions changed-generics changed-effects - outdated-generics forgotten-definitions - root-cache source-files update-map implementors-map -} [ H{ } clone swap set ] each +"syntax" vocab vocab-words bootstrap-syntax set + +H{ } clone dictionary set +H{ } clone root-cache set +H{ } clone source-files set +H{ } clone update-map set +H{ } clone implementors-map set init-caches +bootstrapping? on + +call( -- ) +call( -- ) + ! Vocabulary for slot accessors "accessors" create-vocab drop -dummy-compiler compiler-impl set - -call( -- ) -call( -- ) -call( -- ) - ! After we execute bootstrap/layouts num-types get f builtins set -bootstrapping? on - [ +call( -- ) + ! Create some empty vocabs where the below primitives and ! classes will go { diff --git a/core/compiler/units/units.factor b/core/compiler/units/units.factor index a64080e510..87a25f2af7 100644 --- a/core/compiler/units/units.factor +++ b/core/compiler/units/units.factor @@ -64,16 +64,6 @@ M: f process-forgotten-words drop ; : without-optimizer ( quot -- ) [ f compiler-impl ] dip with-variable ; inline -! Trivial compiler. We don't want to touch the code heap -! during stage1 bootstrap, it would just waste time. -SINGLETON: dummy-compiler - -M: dummy-compiler to-recompile f ; - -M: dummy-compiler recompile drop { } ; - -M: dummy-compiler process-forgotten-words drop ; - : ( -- pair ) { H{ } H{ } } [ clone ] map ; SYMBOL: definition-observers @@ -143,13 +133,15 @@ M: object bump-effect-counter* drop f ; [ drop ] [ notify-definition-observers notify-error-observers ] if ; : finish-compilation-unit ( -- ) - remake-generics - to-recompile recompile - update-tuples - process-forgotten-definitions - modify-code-heap - bump-effect-counter - notify-observers ; + [ ] [ + remake-generics + to-recompile recompile + update-tuples + process-forgotten-definitions + modify-code-heap + bump-effect-counter + notify-observers + ] if-bootstrapping ; PRIVATE> diff --git a/core/source-files/source-files.factor b/core/source-files/source-files.factor index 4991a0860a..840ed94b96 100644 --- a/core/source-files/source-files.factor +++ b/core/source-files/source-files.factor @@ -16,7 +16,8 @@ checksum definitions ; : record-top-level-form ( quot file -- ) - (>>top-level-form) H{ } notify-definition-observers ; + (>>top-level-form) + [ ] [ H{ } notify-definition-observers ] if-bootstrapping ; : record-checksum ( lines source-file -- ) [ crc32 checksum-lines ] dip (>>checksum) ;