: compiler-message ( string -- )
"trace-compilation" get [ [ print flush ] with-global ] [ drop ] if ;
-: start ( word -- )
+: start-compilation ( word -- )
dup name>> compiler-message
H{ } clone dependencies namespaces:set
H{ } clone generic-dependencies namespaces:set
[ [ combinator? ] [ unknown-macro-input? ] bi* and ]
} 2|| ;
-: finish ( word -- )
+: finish-compilation ( word -- )
! Recompile callers if the word's stack effect changed, then
! save the word's dependencies so that if they change, the
! word can get recompiled too.
: deoptimize-with ( word def -- * )
! If the word failed to infer, compile it with the
! non-optimizing compiler.
- swap [ finish ] [ compiled get set-at ] bi return ;
+ swap [ finish-compilation ] [ compiled get set-at ] bi return ;
: not-compiled-def ( word error -- def )
'[ _ _ not-compiled ] [ ] like ;
! failed to infer.
'[
_ {
- [ start ]
+ [ start-compilation ]
[ frontend ]
[ backend ]
- [ finish ]
+ [ finish-compilation ]
} cleave
] with-return ;