]> gitweb.factorcode.org Git - factor.git/commitdiff
New optimization
authorslava <slava@factorcode.org>
Fri, 10 Nov 2006 08:21:03 +0000 (08:21 +0000)
committerslava <slava@factorcode.org>
Fri, 10 Nov 2006 08:21:03 +0000 (08:21 +0000)
TODO.FACTOR.txt
library/compiler/optimizer/class-infer.factor

index f035f002bd85710f45d3291eaa632cebc57ce74e..b30c33587fd98870fb54c4d8bbbdc864c4f5a400 100644 (file)
@@ -1,10 +1,8 @@
-- %allot-bignum-signed-2 is broken on both platforms
 - sometimes fep when closing window
 - windows rollover broken again
 
 + ui:
 
-- dataflow view of [ { array } declare first ] is wrong
 - docs: don't pass volatile aliens to callbacks
 - live search: timer delay would be nice
 - menu should stay up if mouse button released
@@ -42,8 +40,7 @@
 
 + compiler/ffi:
 
-- optimization: if one branch throws an error, then we need to infer
-  types based solely on the other branch
+- %allot-bignum-signed-2 is broken on both platforms
 - cross-word type inference
 - callback scheduling issue
 - amd64 structs-by-value bug
@@ -65,7 +62,6 @@
 
 + prettyprinter:
 
-- array with POSTPONE: in it: printed wrong
 - clean it up
 - if we're printing a block on multiple lines, break at some words like
   set off on % # , ... and assembler opcodes
index e949cf905908aaaf79036310d779e9ced696f741..900621ff6008f2bffb2c7bafa29a216f54e5d419 100644 (file)
@@ -163,14 +163,17 @@ DEFER: (infer-classes)
     [ pick merge-value-class swap set-value-class* ] 2each
     drop ;
 
+: active-children ( node -- seq )
+    node-children
+    [ last-node ] map
+    [ #terminate? not ] subset ;
+
 : merge-children ( node -- )
     dup node-successor dup #merge? [
-        over node-children empty? [
+        swap active-children dup empty? [
             2drop
         ] [
-            node-out-d <reversed>
-            >r node-children [ last-node ] map r>
-            annotate-merge
+            swap node-out-d <reversed> annotate-merge
         ] if
     ] [
         2drop