Simplify generator
parent
9c3a3f9db5
commit
187c5a5642
|
@ -53,7 +53,7 @@ TUPLE: alien-callback-error ;
|
||||||
%alien-callback
|
%alien-callback
|
||||||
unbox-return
|
unbox-return
|
||||||
%return
|
%return
|
||||||
] generate-block ;
|
] generate-1 ;
|
||||||
|
|
||||||
M: alien-callback generate-node ( node -- )
|
M: alien-callback generate-node ( node -- )
|
||||||
end-basic-block compile-gc generate-callback iterate-next ;
|
end-basic-block compile-gc generate-callback iterate-next ;
|
||||||
|
|
|
@ -2,8 +2,7 @@
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: compiler
|
IN: compiler
|
||||||
USING: arrays assembler errors generic hashtables inference
|
USING: arrays assembler errors generic hashtables inference
|
||||||
kernel kernel-internals math namespaces queues sequences
|
kernel kernel-internals math namespaces sequences words ;
|
||||||
words ;
|
|
||||||
|
|
||||||
GENERIC: stack-reserve*
|
GENERIC: stack-reserve*
|
||||||
|
|
||||||
|
@ -58,33 +57,14 @@ UNION: #terminal
|
||||||
literal-table get
|
literal-table get
|
||||||
] V{ } make
|
] V{ } make
|
||||||
code-format add-compiled-block save-xt ;
|
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 -- )
|
GENERIC: generate-node ( node -- )
|
||||||
|
|
||||||
: generate-nodes ( node -- )
|
: generate-nodes ( node -- )
|
||||||
[ node@ generate-node ] iterate-nodes end-basic-block ;
|
[ node@ generate-node ] iterate-nodes end-basic-block ;
|
||||||
|
|
||||||
: generate-word ( node -- )
|
|
||||||
[ [ generate-nodes ] with-node-iterator ]
|
|
||||||
generate-block ;
|
|
||||||
|
|
||||||
: generate ( word node -- )
|
: generate ( word node -- )
|
||||||
[
|
[ [ generate-nodes ] with-node-iterator ] generate-1 ;
|
||||||
<queue> generate-queue set
|
|
||||||
generate-word generate-loop
|
|
||||||
] with-scope ;
|
|
||||||
|
|
||||||
! node
|
! node
|
||||||
M: node generate-node ( node -- next ) drop iterate-next ;
|
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 )
|
M: #label generate-node ( node -- next )
|
||||||
dup node-param dup generate-call >r
|
dup node-param dup generate-call >r
|
||||||
swap node-child generate-word r> ;
|
swap node-child generate r> ;
|
||||||
|
|
||||||
! #if
|
! #if
|
||||||
: end-false-branch ( label -- )
|
: end-false-branch ( label -- )
|
||||||
|
|
Loading…
Reference in New Issue