Mandy,
Native part looks good for me.
javaClasses.cpp:
1. It might be good to create a helper inline function for
int bci_version = stackFrame->int_field(bci_offset);
int version = BackTrace::version_at(bci_version);
2. java_lang_StackFrameInfo::fill_methodInfo
CHECK macro left methodInfo partially initialized, not sure it's OK.
javaClasses.inline.hpp:
78 You can use the same pattern as in assert:
if ((jushort)version != version) version = USHRT_MAX;
117 Is it possible to add comment about +1000000 magic?
jvm.cpp:
627 missed space around =
-Dmitry
On 2015-11-10 05:32, Mandy Chung wrote:
> javadoc:
>
> http://cr.openjdk.java.net/~mchung/jdk9/jep259/api/java/lang/StackWalker.html
>
> webrev:
> http://cr.openjdk.java.net/~mchung/jdk9/jep259/webrev.00/
>
> Overview of the implementation:
> When stack walking begins, the StackWalker calls into the VM to anchor a
> native frame (callStackWalk) that will fetch the first batch of stack frames.
> VM will then invoke the doStackWalk method so that the consumer starts
> getting StackFrame object for each frame. If all frames in the current batch
> are traversed, it will ask the VM to fetch the next batch. The library side
> is doing the filtering of reflection frames. For this patch, the VM filters
> of the hidden frames and also filter out Throwable::init related frames for
> stack trace.
>
> Ultimately we will move to these built-in logic out from the VM to the
> library but I’d like to separate them as future works.
>
> This patch also includes the change for Throwable to use StackWalker but it’s
> disabled by default. To enable it, set -Dstackwalk.newThrowable=true. The
> VM backtrace is well tuned for performance. So we separate the switch of
> Throwable to use StackWalker as a follow-on work:
> JDK-8141239 Throwable should use StackWalker API to capture the backtrace
>
> MemberName initialization is one source of overhead and we propose to keep
> the VM flag -XX:-MemberNameInStackFrame for the time being for the
> performance work to continue for JDK-8141239.
>
> Thanks
> Mandy
>
--
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the sources.