You might want to get back Method (or something equivalent non-executable version?) this requires a lot more consideration. StackWalker opens up this possibility for the future. I’d like to keep the scope for this JEP to do stack walking and provide the replacement for sun.reflect.Reflection.getCallerClass in JDK 9.
You can file RFE for future consideration.
Mandy
> On Nov 12, 2015, at 7:29 AM, Jason Mehrens <jason_mehrens at hotmail.com> wrote:
>> Mandy,
>> Forgive my ignorance on this subject and impacts but, would it be possible to include more metadata methods in the StackWalker.StackFrame interface such as getParameterTypes/parameterArray and getReturnType/returnType? Ideally, I really would like these methods for StackTraceElement since knowing the exact parameter types allows the caller to lookup the method to examine all the method metadata which is useful for logging not only in output but for use in stacktrace reduction algorithms.
>> Thanks,
>> Jason
>> ________________________________________
> From: core-libs-dev <core-libs-dev-bounces at openjdk.java.net> on behalf of Mandy Chung <mandy.chung at oracle.com>
> Sent: Monday, November 9, 2015 8:32 PM
> To: core-libs-dev; hotspot-runtime-dev at openjdk.java.net> Subject: Code Review for JEP 259: Stack-Walking API
>> 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