diff --git a/TODO.FACTOR.txt b/TODO.FACTOR.txt index 642260345a..86519d6f04 100644 --- a/TODO.FACTOR.txt +++ b/TODO.FACTOR.txt @@ -15,6 +15,7 @@ - fdasfsdfsa :help -- weird - %allot-bignum-signed-2 still has issues on ppc - fix %allot-bignum-signed-1/2 on x86 +- see if 0 0 >= is optimized + ui: diff --git a/library/compiler/generator/generator.factor b/library/compiler/generator/generator.factor index 0c01400865..f50a81c99b 100644 --- a/library/compiler/generator/generator.factor +++ b/library/compiler/generator/generator.factor @@ -56,14 +56,16 @@ UNION: #terminal relocation-table get literal-table get word-table get - ] V{ } make - code-format add-compiled-block save-xt ; -! + ] V{ } make code-format add-compiled-block save-xt ; + GENERIC: generate-node ( node -- ) : generate-nodes ( node -- ) [ node@ generate-node ] iterate-nodes end-basic-block ; +: generate-branch ( node -- ) + [ generate-nodes ] keep-templates ; + : generate ( word node -- ) [ [ generate-nodes ] with-node-iterator ] generate-1 ; @@ -85,44 +87,57 @@ M: #label generate-node : generate-if ( node label -- next )