Following improvements implemented:
- Switch over `String` replaced with switch single char
- Binary search for frames in `StackMapGenerator`
- `StackMapGenerator.rawHandlers` with pre-calculated offsets
- `ClassEntry` is caching `ClassDesc` symbol
- Caching of type symbols in `NameAndTypeEntry` and `MethodTypeEntry`
- Caching `MethodTypeDesc` in `MethodInfo` implementations
- `StackMapGenerator` and `Utils` delegating to cached `MethodTypeDesc` instead 
of custom parsing

No API change.

Benchmarks show stack map generation improved by 21% and code generation from 
symbols improved by 30%.


Benchmark                     Mode  Cnt       Score       Error  Units
GenerateStackMaps.benchmark  thrpt   10  407931.202 ± 13101.023  ops/s
RebuildMethodBodies.shared   thrpt    4   10258.597 ±   383.699  ops/s
RebuildMethodBodies.unshared thrpt    4    7224.543 ±   256.800  ops/s



Benchmark                     Mode  Cnt       Score      Error  Units
GenerateStackMaps.benchmark  thrpt   10  495101.110 ± 2389.628  ops/s
RebuildMethodBodies.shared    thrpt   4   13380.272 ±  810.113  ops/s
RebuildMethodBodies.unshared  thrpt   4    9399.863 ±  557.060  ops/s

-------------

Commit messages:
 - Merge branch 'master' of https://github.com/openjdk/jdk into 
JDK-8306842-perf-improvements
 - more use of MethodInfo::methodTypeSymbol and faster ClassDesc slot size 
calculation
 - merge from master
 - StackMapGenerator::processInvokeInstructions uses cached MethodTypeDesc
 - caching MethodTypeDesc in MethodInfo implementations and improved Util 
methods
 - getting symbols from NaTEntry moved to new Util::fieldTypeSymbol and 
Util::methodTypeSymbol methods
 - new RebuildMethodBodies benchmark
 - fixed Util::entryList
 - Apply suggestions from code review
 - caching type symbols in NameAndTypeEntry and MethodTypeEntry
 - ... and 16 more: https://git.openjdk.org/jdk/compare/a05560d9...ca4c00d4

Changes: https://git.openjdk.org/jdk/pull/13671/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13671&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8306842
  Stats: 476 lines in 23 files changed: 283 ins; 83 del; 110 mod
  Patch: https://git.openjdk.org/jdk/pull/13671.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13671/head:pull/13671

PR: https://git.openjdk.org/jdk/pull/13671

Reply via email to