On Tue, 13 Jun 2023 11:32:59 GMT, Adam Sotona <asot...@openjdk.org> wrote:

>> Classfile context object and multi-state options have been discussed at 
>> https://mail.openjdk.org/pipermail/classfile-api-dev/2023-May/000321.html
>> This patch implements the proposed changes in Classfile API and fixes all 
>> affected code across JDK sources and tests.
>> 
>> Please review.
>> 
>> Thanks,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   ClassHierarchyResolver.DEFAULT_RESOLVER gets info from system class loader 
> and does not cache
>   method-level caching is enabled if the provided resolver is not already 
> cached

All the performance regressions have been found and fixed.
Stackmaps generation logic is following:
- `STACK_MAPS_WHEN_REQUIRED` is the default option and performance-critical. It 
keeps original stack maps if code match and generate them only when required.
- `STACK_MAPS_ALWAYS` always (re)generate stack maps no matter if exist in the 
original
- `STACK_MAPS_NEVER` stack maps are not generated and dropped if already exist

Naming convention can be still adjusted.

Default `ClassHierarchyResolver` now use reflection from system class loader 
and it is not globally cached (so no dilemma about CHM vs HM). Any CHR is 
cached on method level if not already cached.

Benchmarks comparison of this PR vs master now shows even slight improvement:

Benchmark                                  (transform)    master  this PR Units
AdHocAdapt.transform                              LIFT     8.704    9.629 ops/s
AdHocAdapt.transform                             LIFT1     8.622    9.275 ops/s
AdHocAdapt.transform                             LIFT2     9.257    9.378 ops/s
AdaptInjectNoop.transform                   NOP_SHARED     4.709    4.978 ops/s
AdaptNull.transform                           SHARED_1    96.686   98.027 ops/s
AdaptNull.transform                           SHARED_2    48.820   49.257 ops/s
AdaptNull.transform                           SHARED_3     9.611    9.691 ops/s
AdaptNull.transform                  SHARED_3_NO_DEBUG    12.218   12.343 ops/s
AdaptNull.transform                         UNSHARED_3     3.614    3.603 ops/s
ParseOptions.transformNoDebug                      N/A    11.169   11.084 ops/s
ParseOptions.transformNoLineNumbers                N/A    10.590   10.523 ops/s
ParseOptions.transformNoStackmap                   N/A     6.220    9.646 ops/s

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

PR Comment: https://git.openjdk.org/jdk/pull/14180#issuecomment-1589174024

Reply via email to