> 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

Adam Sotona has updated the pull request with a new target base due to a merge 
or a rebase. The pull request now contains 34 commits:

 - Merge branch 'master' into JDK-8306842-perf-improvements
   
   # Conflicts:
   #    make/RunTests.gmk
   #    src/java.base/share/classes/jdk/internal/classfile/impl/Util.java
 - LinkedList replaced with ArrayList in benchmarks
 - Apply suggestions from code review
   
   Co-authored-by: Andrey Turbanov <turban...@gmail.com>
 - changed LinkedList to ArrayList in RebuildMethodBodies benchmark
 - added RepeatedModelTraversal JMH benchmark
 - fixed jmh benchmark parameters
 - fixed StackMapGenerator
 - Apply suggestions from code review
   
   Co-authored-by: liach <7806504+li...@users.noreply.github.com>
 - Merge branch 'master' of https://github.com/openjdk/jdk into 
JDK-8306842-perf-improvements
   
   # Conflicts:
   #    
src/java.base/share/classes/jdk/internal/classfile/impl/DirectCodeBuilder.java
   #    
src/java.base/share/classes/jdk/internal/classfile/impl/StackCounter.java
   #    
src/java.base/share/classes/jdk/internal/classfile/impl/StackMapGenerator.java
   #    test/jdk/jdk/classfile/DiscontinuedInstructionsTest.java
   #    test/jdk/jdk/classfile/StackMapsTest.java
 - more use of MethodInfo::methodTypeSymbol and faster ClassDesc slot size 
calculation
 - ... and 24 more: https://git.openjdk.org/jdk/compare/5763be72...d99e7ad0

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

Changes: https://git.openjdk.org/jdk/pull/13671/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13671&range=07
  Stats: 592 lines in 28 files changed: 386 ins; 90 del; 116 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