[plt-scheme] Reexpansion of modules
Matthias-
On Aug 19, 2006, at 1:57 PM, Matthias Felleisen wrote:
> 2. Yes, we could expand PLT Scheme to PLT Scheme [core] first but
> even in this core language you have so many library calls and
> extensions, resolution of semantic issues, etc, that NOW WATCH
>
> -- compiling the rest in Larceny is either impossible or
> -- it doesn't produce code that is faster than PLT Scheme and
> faithful to its semantics.
> [Evaluation order is just one "switch" (ever wondered about the
> love and attachment of compiler hacks to switches?)
> that slows down object code in Larceny a lot. Why? I don't know.]
On this latter point, are you referring to the "standard" evaluation
order, as in left-to-right, procedure operand first, then the first
argument to the invocation, then the second arg, and so on?
This is slower because you want to evaluate the procedure operand
last; I can't recall whether this is due to cache effects, register
pressure across the argument evaluations (which I remember as the
reason that the commercial C compiler I hacked on eval'd the
procedure operand last), or something else entirely. I'd suspect
cache effects, but Will or Jesse are probably the right ones to
answer the question.
-Felix