From 187c5a56426c18f3ae47a78cecd93a10dd36a2a7 Mon Sep 17 00:00:00 2001 From: slava Date: Thu, 10 Aug 2006 05:05:12 +0000 Subject: [PATCH] Simplify generator --- library/compiler/alien/alien-callback.factor | 2 +- library/compiler/generator/generator.factor | 28 +++----------------- 2 files changed, 5 insertions(+), 25 deletions(-) diff --git a/library/compiler/alien/alien-callback.factor b/library/compiler/alien/alien-callback.factor index 678842890d..bee7fb5eab 100644 --- a/library/compiler/alien/alien-callback.factor +++ b/library/compiler/alien/alien-callback.factor @@ -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 ; diff --git a/library/compiler/generator/generator.factor b/library/compiler/generator/generator.factor index f71b250d2c..3ed77b1780 100644 --- a/library/compiler/generator/generator.factor +++ b/library/compiler/generator/generator.factor @@ -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 -- ) - [ - 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 -- )