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)
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to