<div dir="ltr">Hi Florin,<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Nov 4, 2013 at 7:09 AM, Florin Mateoc <span dir="ltr">&lt;<a href="mailto:florin.mateoc@gmail.com" target="_blank">florin.mateoc@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Hi Eliot,<br>
<br>
I am not sure if this is the right moment to bring this up, when you are so busy with the new garbage collector, but,<br>
since you were also talking about powerful new optimizations and this seems a very good one... I was toying with the<br>
idea before, but I did not have the right formulation for it - I was thinking of doing it on the image side, at the AST<br>
level and then communicating somehow with the VM (this aspect becomes moot if the JIT code is generated from Smalltalk),<br>
but now I stumbled upon it on the web and I think it would be better done inside the JIT. In Rémi Forax&#39; formulation:<br>
<br>
&quot;On thing that trace based JIT has shown is that a loop or function are valid optimization entry points. So like you can<br>
have an inlining cache for function at callsite, you should have a kind of inlining cache at the start of a loop.&quot;<br>
<br>
This was in the context of a blog entry by Cliff Click:<br>
<a href="http://www.azulsystems.com/blog/cliff/2011-04-04-fixing-the-inlining-problem" target="_blank">http://www.azulsystems.com/blog/cliff/2011-04-04-fixing-the-inlining-problem</a><br>
The comments also contain other useful suggestions.<br>
<br>
And, the loop inlining cache could also specialize not just on the receiver block, but also on the types of the<br>
arguments (this is true for methods as well, but, in the absence of profiling information, loops are more likely to be<br>
&quot;hot&quot;, plus we can easily detect nested loops which reinforce the &quot;hotness&quot;)<br></blockquote><div><br></div><div>AFAICT this is subsumed under adaptive optimization/speculative inlining.  i.e. this is one of the potential optimizations in an adaptive optimizing VM.  Further, I also believe that by for the best place to do this kind of thing is indeed in the image, and to do it at the bytecode-to-bytecode level.  But I&#39;ve said this many times before and don&#39;t want to waste cycles waffling again.</div>
<div><br></div><div>thanks.</div><div>e.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Regards,<br>
Florin<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div></div>