Hiding the lambda proxy frame
Remi Forax
forax at univ-mlv.fr
Tue Jun 11 09:56:19 PDT 2013
On 06/11/2013 05:01 PM, Robert Field wrote:
> Good point.
> I have submitted 8016334: Hide the lambda proxy frame
> And assigned it to myself.
>
> Thanks,
> Robert
Thank you Robert,
Brian remind me that because this annotation is currently Hotspot
specific, we have to made it public first and part of the JDK
(either as a top-level annotation in java.lang.invoke or as inner in
java.lang.invoke.LambdaMetaFactory).
Rémi
>
> On 6/11/13 5:54 AM, Remi Forax wrote:
>> Hi Brian, Paul, Robert, hi all,
>> currently when you print a stacktrace that show a call inside a lambda,
>> users can see the the frame corresponding to the method of the generated
>> proxy.
>>
>> By example:
>> java.lang.Throwable
>> StackTraceTest.lambda$0(StackTraceTest.java:6)
>> StackTraceTest$$Lambda$1.run(Unknown Source) <--- ugly, isn't it
>> StackTraceTest.main(StackTraceTest.java:8)
>>
>> I think this line should not be visible to user, it doesn't provide
>> useful information,
>> just make the stack trace longer than it should.
>>
>> A method can be marked hidden in a stack trace by using the annotation
>> LambdaFom.Hidden.
>>
>> With ASM, one just have to add the following line:
>>
>> mv.visitAnnotation("Ljava/lang/invoke/LambdaForm$Hidden;", true);
>>
>> cheers,
>> Rémi
>>
>>
>
More information about the lambda-dev
mailing list