Simplify generator

slava 2006-08-10 05:05:12 +00:00
parent 9c3a3f9db5
commit 187c5a5642
2 changed files with 5 additions and 25 deletions

View File

@ -53,7 +53,7 @@ TUPLE: alien-callback-error ;
%alien-callback
unbox-return
%return
] generate-block ;
] generate-1 ;
M: alien-callback generate-node ( node -- )
end-basic-block compile-gc generate-callback iterate-next ;

View File

@ -2,8 +2,7 @@
! See http://factorcode.org/license.txt for BSD license.
IN: compiler
USING: arrays assembler errors generic hashtables inference
kernel kernel-internals math namespaces queues sequences
words ;
kernel kernel-internals math namespaces sequences words ;
GENERIC: stack-reserve*
@ -58,33 +57,14 @@ UNION: #terminal
literal-table get
] V{ } make
code-format add-compiled-block save-xt ;
SYMBOL: generate-queue
: generate-loop ( -- )
generate-queue get dup queue-empty? [
drop
] [
deque first3 generate-1 generate-loop
] if ;
: generate-block ( word node quot -- | quot: node -- )
3array generate-queue get enque ;
!
GENERIC: generate-node ( node -- )
: generate-nodes ( node -- )
[ node@ generate-node ] iterate-nodes end-basic-block ;
: generate-word ( node -- )
[ [ generate-nodes ] with-node-iterator ]
generate-block ;
: generate ( word node -- )
[
<queue> generate-queue set
generate-word generate-loop
] with-scope ;
[ [ generate-nodes ] with-node-iterator ] generate-1 ;
! node
M: node generate-node ( node -- next ) drop iterate-next ;
@ -96,7 +76,7 @@ M: node generate-node ( node -- next ) drop iterate-next ;
M: #label generate-node ( node -- next )
dup node-param dup generate-call >r
swap node-child generate-word r> ;
swap node-child generate r> ;
! #if
: end-false-branch ( label -- )