RFR (S) 8216308: StackTraceElement::fill_in can use injected Class source-file

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Fri Jan 11 23:45:18 UTC 2019


http://cr.openjdk.java.net/~shade/8216308/webrev.01/src/hotspot/share/classfile/javaClasses.cpp.frames.html

2629 if (ShowHiddenFrames) {
2630         source = vmSymbols::unknown_class_name();
2631 source_file = StringTable::intern(source, CHECK);
2632 }

I wonder if ShowHiddenFrames works at all.  This seems okay though. 
Maybe we should file a bug report to figure out what ShowHiddenFrames is 
supposed to do.

I think this change looks good and handles the redefinition code as 
correctly as we can (this is sort of a corner case that is rarely found).

Thanks,
Coleen

On 1/10/19 10:21 AM, Aleksey Shipilev wrote:
> RFE:
>    https://bugs.openjdk.java.net/browse/JDK-8216308
>
> Fix:
>    http://cr.openjdk.java.net/~shade/8216308/webrev.01/
>
> This is another patch that removes the use of SymbolTable on hot path in stack trace creation. We
> can inject Class.source_file field to cache the source file name. Some caution is needed to properly
> handle invalidation when redefinition happens.
>
> This makes stack trace generation significantly faster, and finally better than it used to even
> before StackWalker and StringTable-related regressions in 9 and 11.
>
> Benchmark            (depth) Mode Cnt    Score   Error Units
>
> # 8u
> StackTraceBench.test       1 avgt  15   10.851 ± 0.075 us/op
> StackTraceBench.test      10 avgt  15   15.325 ± 0.089 us/op
> StackTraceBench.test     100 avgt  15   59.717 ± 0.449 us/op
> StackTraceBench.test    1000 avgt  15  529.020 ± 3.654 us/op
>
> # jdk/jdk baseline
> StackTraceBench.test      1  avgt  15   15.077 ± 0.065 us/op
> StackTraceBench.test     10  avgt  15   21.153 ± 0.123 us/op
> StackTraceBench.test    100  avgt  15   80.758 ± 0.363 us/op
> StackTraceBench.test   1000  avgt  15  674.888 ± 4.985 us/op
>
> # jdk/jdk patched
> StackTraceBench.test      1  avgt  15    8.892 ± 0.064 us/op
> StackTraceBench.test     10  avgt  15   12.010 ± 0.079 us/op
> StackTraceBench.test    100  avgt  15   43.091 ± 0.254 us/op
> StackTraceBench.test   1000  avgt  15  353.194 ± 2.040 us/op
>
> Testing: hotspot tier1, jdk-submit, ad-hoc benchmarks
>
> Thanks,
> -Aleksey
>



More information about the hotspot-dev mailing list