yes, thumb up ! Rémi
Le 16 février 2015 18:50:25 CET, "Joel Borggrén-Franck" <[email protected]> a écrit : >+1 > >cheers >/Joel > >> On 16 Feb 2015, at 15:25, Staffan Larsen <[email protected]> >wrote: >> >> Good point! >> >> new webrev: http://cr.openjdk.java.net/~sla/8025636/webrev.02/ >> >> Thanks, >> /Staffan >> >>> On 16 feb 2015, at 12:40, Remi Forax <[email protected]> wrote: >>> >>> Hi Staffan, >>> ASM MethodVisitor API requires to call visitAnnotation before >calling visitCode so >>> I think you shoud call visitAnnotation before calling new >ForwardingMethodGenerator(mv).generate(). >>> >>> cheers, >>> Rémi >>> >>> On 02/16/2015 08:47 AM, Staffan Larsen wrote: >>>> Brian pointed out to me that this change missed to add the >annotation to bridge methods. Here is an updated version that takes >those into account. I also needed to update the test to verify that >bridge methods were correctly annotated - it got a little bit more >complex since I had to force bridges being used. >>>> >>>> new webrev: http://cr.openjdk.java.net/~sla/8025636/webrev.01/ >>>> >>>> Thanks, >>>> /Staffan >>>> >>>> >>>>> On 3 feb 2015, at 10:15, Staffan Larsen ><[email protected]> wrote: >>>>> >>>>> Hi, >>>>> >>>>> Please review this patch for hiding the lambda proxy frame in >stack traces: >>>>> >>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8025636 >>>>> webrev: http://cr.openjdk.java.net/~sla/8025636/webrev.00/ >>>>> >>>>> This is a straightforward addition of the LambdaForm$Hidden >annotation to the generated methods. What is surprising is that this >works even if LambdaForm$Hidden is a package-private class in >java.lang.invoke and thus not accessible from most of the generated >classes. There is some discussion of and answers to this in the bug, >but essentially this works because the annotation class is never >resolved and the code in Hotspot that looks for the annotation amounts >to nothing more than string comparisons. >>>>> >>>>> Hidden stack frames can be shown by running with >“-XX:+UnlockDiagnosticVMOptions -XX:+ShowHiddenFrames”. >>>>> >>>>> For an example of what this patch does, consider this code: >>>>> >>>>> Runnable r = () -> { throw new RuntimeException(); }; >>>>> r.run(); >>>>> >>>>> Previously, this would output: >>>>> >>>>> java.lang.RuntimeException >>>>> at pkg.Foo.lambda$main$0(Foo.java:5) >>>>> at pkg.Foo$$Lambda$1/2001112025.run(<Unknown>:1000000) >>>>> at pkg.Foo.main(Foo.java:15) >>>>> >>>>> With the patch it looks like this: >>>>> >>>>> java.lang.RuntimeException >>>>> at pkg.Foo.lambda$main$0(Foo.java:5) >>>>> at pkg.Foo.main(Foo.java:15) >>>>> >>>>> >>>>> Thanks, >>>>> /Staffan >>>>> >>>> >>> >> -- Envoyé de mon téléphone Android avec K-9 Mail. Excusez la brièveté.
