Request for review: 7034585 Adjust fillinStackTrace filtering to assist 6998871

Mandy Chung mandy.chung at oracle.com
Fri Apr 8 13:28:20 PDT 2011


  Looks good.

Keeping the new frame added by the changes to Throwable.java for 6998871 
the same name with a dummy argument fillInStackTrace(int) simplifies 
this fix and also the subclass that overrides fillInStackTrace case.  I 
like this solution.

Mandy

On 04/08/11 04:33, David Holmes wrote:
> webrev:
>
> http://cr.openjdk.java.net/~dholmes/7034585/webrev/
>
> When an exception is created, fillInStacktrace is called to populate 
> the backtrace information. This is done in 
> java_lang_Throwable::fill_in_stack_trace in the VM. Because the 
> interesting part of the stacktrace is from the location where the 
> exception was created, and upwards, filtering is applied in 
> fill_in_stack_trace to remove the entry for fillInStackTrace() itself, 
> and the exception constructors.
>
> The current filtering code only expects to find a single frame for the 
> fillInStackTrace method, so if an exception class overrides 
> fillInStackTrace (and invokes super.fillInStackTrace) this actually 
> disables the filtering of the constructors. Eg we see:
>
> Exception in thread "main" MyException
>         at MyException.fillInStackTrace(MyException.java:3)
>         at java.lang.Throwable.<init>(Throwable.java:260)
>         at java.lang.Exception.<init>(Exception.java:54)
>         at java.lang.RuntimeException.<init>(RuntimeException.java:51)
>         at MyException.<init>(MyException.java:1)
>         at MyException.main(MyException.java:7)
>
> instead of:
>
> Exception in thread "main" MyException
>         at MyException.main(MyException.java:7)
>
> The changes to Throwable.java for 6998871 effectively introduce an 
> additional fillInStackTrace() frame and so this too disables the 
> desired filtering of the backtrace.
>
> The proposal is quite simple: to modify fill_in_stack_trace so that it 
> expects one or more fillInStackTrace frames, followed by zero or more 
> constructor frames. This addresses the needs of 6998871 as well as 
> fixing any user-defined overriding of fillInStackTrace.
>
> Thanks,
> David



More information about the hotspot-runtime-dev mailing list