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