From dedbd149458652e8fe1783da64acde1ead6ef210 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 15 May 2009 17:18:38 -0500 Subject: [PATCH] Fix escape analysis bug reported by Doug --- .../escape-analysis/escape-analysis-tests.factor | 6 ++++++ .../tree/escape-analysis/simple/simple.factor | 12 ++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/basis/compiler/tree/escape-analysis/escape-analysis-tests.factor b/basis/compiler/tree/escape-analysis/escape-analysis-tests.factor index 3d9d77ae56..708992f918 100644 --- a/basis/compiler/tree/escape-analysis/escape-analysis-tests.factor +++ b/basis/compiler/tree/escape-analysis/escape-analysis-tests.factor @@ -322,3 +322,9 @@ C: 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 diff --git a/basis/compiler/tree/escape-analysis/simple/simple.factor b/basis/compiler/tree/escape-analysis/simple/simple.factor index 729d6a0490..c0b3982c0e 100644 --- a/basis/compiler/tree/escape-analysis/simple/simple.factor +++ b/basis/compiler/tree/escape-analysis/simple/simple.factor @@ -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 -- )