RFR 8150778: Reduce Throwable.getStackTrace() calls to the JVM

Aleksey Shipilev aleksey.shipilev at oracle.com
Wed Mar 2 20:21:31 UTC 2016

On 03/02/2016 10:57 PM, Coleen Phillimore wrote:
> On 3/2/16 1:58 PM, Aleksey Shipilev wrote:
>> Is there an underlying reason why we can't return the pre-filled
>> StackTraceElements[] array from the JVM_GetStackTraceElements to begin
>> with? This will avoid leaking StackTraceElement constructor into
>> standard library, *and* allows to make StackTraceElement fields final.
>> Taking stuff back from the standard library is hard, if not impossible,
>> so we better expose as little as possible.
> We measured that it's faster to allocate the StackTraceElement array
> in Java and it seems cleaner to the Java guys. It came from similar
> code we've been prototyping for StackFrameInfo.

OK, it's not perfectly clean from implementation standpoint, but this
RFE might not be the best opportunity to polish that. At least make
StackTraceElement constructor private (better), or package-private
(acceptable), and then we are good to go.

Also, I think you can drop this line:
  836          int depth = getStackTraceDepth();


More information about the core-libs-dev mailing list