The Great Startup Problem
Mark Roos
mroos at roos.com
Fri Aug 29 17:28:09 UTC 2014
Hi Jochen,
you wrote:
I also see potential for cases in which the MethodHandle gets
overly
complex. In Groovy we have for example up to N+1 guards for a
method
call with N arguments plus a catchException part and a
switchpoint. Most
of them ending up in selecting the method new. I could imagine
things
getting even more complicated.
I was wondering how deep your GWT chains get and how complex the inserted
LambdaForms are.
I put two examples of my stack traces the first where it succeeds at the
first GWT the second is where
the second GWT is taken. I get about 7 extra frames per GWT.
I still seems to me that a different PIC choice other than chained GWTs
would get rid of a lot of
the extra frames. Though again my profiling shows 97% of call sites for
me are 3 or less GWTs
and 75% are monomorphic. So except when I have recursive like calls it
may not be so big
in practice. (tails calls anyone?)
regards
mark
rtPbc.r938.invoke(Object printInspectStringOn:indent::4)
java.lang.invoke.LambdaForm$DMH/1323468230.invokeStatic_LLL_L(LambdaForm$DMH)
java.lang.invoke.LambdaForm$DMH/38997010.invokeSpecial_LLLL_L(LambdaForm$DMH)
java.lang.invoke.LambdaForm$NamedFunction.invoke_LLLL_L(LambdaForm.java:1118)
java.lang.invoke.LambdaForm$DMH/1555093762.invokeStatic_LL_L(LambdaForm$DMH)
java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:1147)
java.lang.invoke.LambdaForm.interpretName(LambdaForm.java:625)
java.lang.invoke.LambdaForm.interpretWithArguments(LambdaForm.java:604)
java.lang.invoke.LambdaForm$LFI/580024961.interpret_L(LambdaForm$LFI)
java.lang.invoke.LambdaForm$MH/425918570.linkToCallSite(LambdaForm$MH)
rtPbc.r728.invoke(Object printInspectorString:113)
second example
rtPbc.r938.invoke(Object printInspectStringOn:indent::4)
java.lang.invoke.LambdaForm$DMH/1323468230.invokeStatic_LLL_L(LambdaForm$DMH)
java.lang.invoke.LambdaForm$DMH/38997010.invokeSpecial_LLLL_L(LambdaForm$DMH)
java.lang.invoke.LambdaForm$NamedFunction.invoke_LLLL_L(LambdaForm.java:1118)
java.lang.invoke.LambdaForm$DMH/1555093762.invokeStatic_LL_L(LambdaForm$DMH)
java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:1147)
java.lang.invoke.LambdaForm.interpretName(LambdaForm.java:625)
java.lang.invoke.LambdaForm.interpretWithArguments(LambdaForm.java:604)
java.lang.invoke.LambdaForm$LFI/580024961.interpret_L(LambdaForm$LFI)
java.lang.invoke.LambdaForm$DMH/38997010.invokeSpecial_LLLL_L(LambdaForm$DMH)
java.lang.invoke.LambdaForm$NamedFunction.invoke_LLLL_L(LambdaForm.java:1118)
java.lang.invoke.LambdaForm$DMH/1555093762.invokeStatic_LL_L(LambdaForm$DMH)
java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:1147)
java.lang.invoke.LambdaForm.interpretName(LambdaForm.java:625)
java.lang.invoke.LambdaForm.interpretWithArguments(LambdaForm.java:604)
java.lang.invoke.LambdaForm$LFI/580024961.interpret_L(LambdaForm$LFI)
java.lang.invoke.LambdaForm$MH/425918570.linkToCallSite(LambdaForm$MH)
rtPbc.r728.invoke(Object printInspectorString:113)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/mlvm-dev/attachments/20140829/48f64e50/attachment.html>
More information about the mlvm-dev
mailing list