]> gitweb.factorcode.org Git - factor.git/commitdiff
inferencer fixes
authorSlava Pestov <slava@factorcode.org>
Sat, 27 Nov 2004 05:51:28 +0000 (05:51 +0000)
committerSlava Pestov <slava@factorcode.org>
Sat, 27 Nov 2004 05:51:28 +0000 (05:51 +0000)
library/inference/branches.factor
library/inference/dataflow.factor
library/inference/inference.factor
library/test/inference.factor

index 3375f1e4f5e1dbd18f51e521bbfa9172b43e4146..0ebe3f288de2a4ba9f6c12100d47f4f188253169 100644 (file)
@@ -93,12 +93,12 @@ DEFER: (infer)
 : recursive-branch ( quot -- ? )
     #! Set base case if inference didn't fail.
     [
-        car infer-branch drop  recursive-state get set-base t
+        car infer-branch drop recursive-state get set-base t
     ] [
         [ drop f ] when
     ] catch ;
 
-: infer-branches ( consume instruction brachlist -- )
+: infer-branches ( consume instruction branchlist -- )
     #! Recursive stack effect inference is done here. If one of
     #! the branches has an undecidable stack effect, we set the
     #! base case to this stack effect and try again.
index df2067f61659e91422d6b3fc6a633409ac71e43e..8f2798965f09a76509c3950c9717e100a68a14cc 100644 (file)
@@ -53,7 +53,7 @@ SYMBOL: 2GENERIC
     unit cons cons  dataflow-graph cons@ ;
 
 : dataflow-literal, ( lit -- )
-    >r 0 PUSH r> dataflow, ;
+    >r f PUSH r> dataflow, ;
 
 : dataflow-word, ( in word -- )
     >r count CALL r> dataflow, ;
index fcfc725034e68a9a4abb9b6554238d769e4d092b..b930c246e20ede64dda19e2c1fe6d8c815cbc167 100644 (file)
@@ -138,9 +138,13 @@ DEFER: apply-word
 
 : set-base ( [ in | stack ] rstate -- )
     #! Set the base case of the current word.
-    >r uncons vector-length cons r>  car cdr [
-        entry-effect get swap decompose base-case set
-    ] bind ;
+    dup [
+        >r uncons vector-length cons r>  car cdr [
+            entry-effect get swap decompose base-case set
+        ] bind
+    ] [
+        2drop
+    ] ifte ;
 
 : infer ( quot -- [ in | out ] )
     #! Stack effect of a quotation.
index 6ce15aa2592cb1c0daa81128d9949ca540a08e6c..9de9069ae91ec4e850a2c8ec4fc78f70c046ce2e 100644 (file)
@@ -193,3 +193,5 @@ SYMBOL: sym-test
 
 [ [ 1 | 0 ] ] [ [ >n ] infer ] unit-test
 [ [ 0 | 1 ] ] [ [ n> ] infer ] unit-test
+
+[ [ 1 | 1 ] ] [ [ get ] infer ] unit-test