]> gitweb.factorcode.org Git - factor.git/commitdiff
Fix escape analysis bug reported by Doug
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Fri, 15 May 2009 22:18:38 +0000 (17:18 -0500)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Fri, 15 May 2009 22:18:38 +0000 (17:18 -0500)
basis/compiler/tree/escape-analysis/escape-analysis-tests.factor
basis/compiler/tree/escape-analysis/simple/simple.factor

index 3d9d77ae56b235c94da3c8356e49691fc2987b98..708992f91875b12fbc2aa9415fb07951e0d0a017 100644 (file)
@@ -322,3 +322,9 @@ C: <ro-box> ro-box
 [ 0 ] [
     [ { null } declare [ 1 ] [ 2 ] if ] count-unboxed-allocations
 ] unit-test
+
+! Doug found a regression
+
+TUPLE: empty-tuple ;
+
+[ ] [ [ empty-tuple boa layout-of ] count-unboxed-allocations drop ] unit-test
\ No newline at end of file
index 729d6a04907f8789aeedbc15d1cd5a46051a9ad7..c0b3982c0edd7cc0bb6bda38a42812ee7f46eb04 100644 (file)
@@ -49,14 +49,10 @@ M: #push escape-analysis*
 
 : slot-offset ( #call -- n/f )
     dup in-d>>
-    [ first node-value-info class>> ]
-    [ second node-value-info literal>> ] 2bi
-    dup fixnum? [
-        {
-            { [ over tuple class<= ] [ 2 - ] }
-            { [ over complex class<= ] [ 1 - ] }
-            [ drop f ]
-        } cond nip
+    [ second node-value-info literal>> ]
+    [ first node-value-info class>> ] 2bi
+    2dup [ fixnum? ] [ tuple class<= ] bi* and [
+        over 2 >= [ drop 2 - ] [ 2drop f ] if
     ] [ 2drop f ] if ;
 
 : record-slot-call ( #call -- )