On 11 Sep 2009, at 4:57 pm, John Cowan wrote:

> That makes the rule short and (I hope) sweet:
>
>       Redefinitions of variables are retroactive;
>
>       Redefinitions of macros are not.
>
> To override this rule and inline things, one must have a
> switch that makes the implementation non-conformant.

Or a smart implementation; Self supports a high level of dynamism
(everything's an OO message-send, and objects can alter their own
inheritance hierarchy at will, and all objects, including those that
fill the role of classes, are mutable), while also doing aggressive
inlining, by recompiling things as required.

Rather than having long recompile pauses, I gather that it has a two-
stage compilation approach; there's a quick compiler that is used when
the code is needed NOW, and a slow optimising compiler that is run in
a background thread once some quick-compiled code has been run a
sufficient number of times to make it appear to be a hotspot; when
code is invalidated since it inlined something that is later changed,
then it's discarded, and you go back to quick-compiling that function
if it's called again, and if it keeps being called, it once again gets
slow-compiled and will then inline the new definition, if it seems
worthwhile... or something along those lines.

ABS

--
Alaric Snell-Pym
Work: http://www.snell-systems.co.uk/
Play: http://www.snell-pym.org.uk/alaric/
Blog: http://www.snell-pym.org.uk/archives/author/alaric/




_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss

Reply via email to