RFR: 8329597: C2: Intrinsify Reference.clear

Aleksey Shipilev shade at openjdk.org
Thu Jul 11 19:19:20 UTC 2024


On Thu, 11 Jul 2024 15:28:37 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

> [JDK-8240696](https://bugs.openjdk.org/browse/JDK-8240696) added the native method for `Reference.clear`. The original patch skipped intrinsification of this method, because we thought `Reference.clear` is not on a performance sensitive path. However, it shows up prominently on simple benchmarks that touch e.g. `ThreadLocal` cleanups. See the bug for an example profile with `RRWL` benchmarks.
> 
> Additional testing:
>  - [x] Linux x86_64 server fastdebug, `all`
>  - [ ] Linux AArch64 server fastdebug, `all`

On Mac AArch64, which suffers from both native call and WX transition:


Benchmark                   Mode  Cnt  Score   Error  Units

# Intrinsic OFF
ReferenceClear.phantom      avgt    9  52,297 ? 0,294  ns/op
ReferenceClear.phantom_new  avgt    9  57,075 ? 0,296  ns/op
ReferenceClear.soft         avgt    9  52,567 ? 0,393  ns/op
ReferenceClear.soft_new     avgt    9  57,640 ? 0,264  ns/op
ReferenceClear.weak         avgt    9  53,018 ? 1,285  ns/op
ReferenceClear.weak_new     avgt    9  57,227 ? 0,483  ns/op

# Intrinsic ON (default)
ReferenceClear.phantom      avgt    9   0,780 ? 0,017  ns/op
ReferenceClear.soft         avgt    9   0,784 ? 0,022  ns/op
ReferenceClear.weak         avgt    9   0,793 ? 0,033  ns/op
ReferenceClear.phantom_new  avgt    9   3,018 ? 0,015  ns/op
ReferenceClear.soft_new     avgt    9   3,268 ? 0,014  ns/op
ReferenceClear.weak_new     avgt    9   3,004 ? 0,057  ns/op


On x86_64 m7a.16xlarge, which only suffers from the native call:


Benchmark                   Mode  Cnt  Score   Error  Units

# Intrinsic OFF
ReferenceClear.phantom      avgt    9  14.643 ± 0.049  ns/op
ReferenceClear.soft         avgt    9  14.939 ± 0.438  ns/op
ReferenceClear.weak         avgt    9  14.648 ± 0.081  ns/op
ReferenceClear.phantom_new  avgt    9  19.859 ± 2.405  ns/op
ReferenceClear.soft_new     avgt    9  20.208 ± 1.805  ns/op
ReferenceClear.weak_new     avgt    9  20.385 ± 2.570  ns/op

# Intrinsic ON (default)
ReferenceClear.phantom      avgt    9   0.821 ± 0.010  ns/op
ReferenceClear.soft         avgt    9   0.817 ± 0.007  ns/op
ReferenceClear.weak         avgt    9   0.819 ± 0.010  ns/op
ReferenceClear.phantom_new  avgt    9   4.195 ± 0.729  ns/op
ReferenceClear.soft_new     avgt    9   4.315 ± 0.599  ns/op
ReferenceClear.weak_new     avgt    9   3.986 ± 0.596  ns/op

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

PR Comment: https://git.openjdk.org/jdk/pull/20139#issuecomment-2223248114


More information about the core-libs-dev mailing list