Bugs item #1448235, was opened at 2006-03-12 10:56
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=379534&aid=1448235&group_id=23735
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
Status: Open
Resolution: None
Priority: 7
Submitted By: Matthias Radestock (mradestock)
Assigned to: Nobody/Anonymous (nobody)
Summary: non-functional procedures break unoptimisation
Initial Comment:
SISC (1.13.0-alpha)
#;> (define my+ +)
#;> (define (f l) (list (my+) (reverse! l)))
#;> (f (list 1 2 3))
(0 (3 2 1))
#;> (define (my+ . args) (apply + args))
#;> (f (list 1 2 3))
(0 (1))
#;> (f (list 1 2 3))
(0 (3 2 1))
The second result is clearly wrong and is caused by
AppExp re-executing the entire arg eval sequence when
one of the arg evals gets unoptimised.
Note though that even if AppExp were smarter about this
and only re-executed arg evals from the point it
failed, we would still run into problems when the
unoptimisation occurs at a deeper level, e.g. in one of
the args of a FixedAppExp.
I reckon the solution is to only permit inlining of
purely functional primitives.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=379534&aid=1448235&group_id=23735
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
|