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