<br><font size=2 face="sans-serif">So then the issue is making the methods
small enough for HotSpot to compile and not fall back to the interpreter.</font>
<br><font size=2 face="sans-serif">If that is the case why not find the
means to have Hotspot not do that? It seems that would be less effort
than</font>
<br><font size=2 face="sans-serif">adding hard tail calls to the jvm. In
other words is this really the test case that John is looking for?</font>
<br>
<br><font size=2 face="sans-serif">by the way what do you use as the byte
code size limit to prevent this today?</font>
<br>
<br><font size=2 face="sans-serif">thanks</font>
<br><font size=2 face="sans-serif">mark</font>
<br>
<br>
<br>
<br><font size=1 color=#5f5f5f face="sans-serif">From:
</font><font size=1 face="sans-serif">Charles Oliver Nutter
<headius@headius.com></font>
<br><font size=1 color=#5f5f5f face="sans-serif">To:
</font><font size=1 face="sans-serif">Da Vinci Machine Project
<mlvm-dev@openjdk.java.net></font>
<br><font size=1 color=#5f5f5f face="sans-serif">Date:
</font><font size=1 face="sans-serif">09/02/2012 09:37 AM</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Subject:
</font><font size=1 face="sans-serif">Re: thinking
about proper implementation of tail calls</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Sent by:
</font><font size=1 face="sans-serif">mlvm-dev-bounces@openjdk.java.net</font>
<br>
<hr noshade>
<br>
<br>
<br><font size=3>The classfile limit is only part of the problem. In JRuby
we frequently have larger Ruby methods fall over in the compilation process
because Hotspot bails out on the whole thing. If we could easily break
it up, we would at least get things to compile, even if they needed a CALL
here and there to stitch the bits together. But except for trivial cases
(chaining along root statements) we need tail calls for this to work well.</font>
<p><font size=3>- Charlie (mobile)</font>
<p><font size=3>On Sep 1, 2012 6:31 PM, "Mark Roos" <</font><a href=mailto:mroos@roos.com><font size=3 color=blue><u>mroos@roos.com</u></font></a><font size=3>>
wrote:</font>
<br><font size=3 face="sans-serif">I am looking to learn something here
that I haven't seen in my code yet.</font><font size=3> <br>
</font><font size=3 face="sans-serif"><br>
John mentioned</font><font size=3> </font><tt><font size=3><br>
Suppose you are compiling your favorite high-level
language to the JVM, and you start <br>
running into the various size limits in class
files</font></tt><font size=3> <br>
</font><font size=3 face="sans-serif"><br>
To which there seemed to be some agreement that this was an issue. Running
over my Smalltalk</font><font size=3> </font><font size=3 face="sans-serif"><br>
code base my largest method is 12000 bytes with only about a dozen that
are more than</font><font size=3> </font><font size=3 face="sans-serif"><br>
10k bytes. The corresponding class file is 16k bytes ( I only do
one method + blocks per class file)</font><font size=3> <br>
</font><font size=3 face="sans-serif"><br>
So my question is what is causing these mega methods. Is it just
an artifact of the language being</font><font size=3> </font><font size=3 face="sans-serif"><br>
implemented or is it from some language side optimization (such as trace
optimization)? Perhaps</font><font size=3> </font><font size=3 face="sans-serif"><br>
I am just lucky to not see it yet.</font><font size=3> <br>
</font><font size=3 face="sans-serif"><br>
thanks</font><font size=3> </font><font size=3 face="sans-serif"><br>
mark</font><font size=3><br>
_______________________________________________<br>
mlvm-dev mailing list</font><font size=3 color=blue><u><br>
</u></font><a href="mailto:mlvm-dev@openjdk.java.net"><font size=3 color=blue><u>mlvm-dev@openjdk.java.net</u></font></a><font size=3 color=blue><u><br>
</u></font><a href="http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev"><font size=3 color=blue><u>http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev</u></font></a><font size=3><br>
</font><tt><font size=2>_______________________________________________<br>
mlvm-dev mailing list<br>
mlvm-dev@openjdk.java.net<br>
</font></tt><a href="http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev"><tt><font size=2>http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev</font></tt></a><tt><font size=2><br>
</font></tt>
<br>