Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

Commit [e4c6f7] Maximize Restore History

1.0.28.58: more MAKE-ARRAY goodness

Consider (MAKE-ARRAY '(3) :INITIAL-CONTENTS (LIST X Y Z)):

The transform for LIST dimensions replaces this with an identical
call, except that the dimensions will be 3.

The transform for INTEGER dimensions fires, but does not yet
see the (LIST X Y Z) in INITIAL-CONTENTS, since it is now an
argument to the lambda introduced by the previous call.

One option would be to delay the latter transform if we don't see
how to compile it nicely, because after a couple of IR1-OPTIMIZE
passes the call to LIST will be there, and the intermediate lambda
eliminated.

However, because multiple roundtrips like that suck, instead make
the source transform for MAKE-ARRAY smart enough to recognize this
case, and transform to the integer argument case directly.

...now, this makes me think we really should try to eliminate /
simplify lambdas introduced by TRANSFORM-CALL up front somehow.

Nikodemus Siivola Nikodemus Siivola 2009-05-18

changed src/compiler/array-tran.lisp
changed tests/compiler.impure.lisp
changed version.lisp-expr
src/compiler/array-tran.lisp Diff Switch to side-by-side view
Loading...
tests/compiler.impure.lisp Diff Switch to side-by-side view
Loading...
version.lisp-expr Diff Switch to side-by-side view
Loading...