RFR: 8186670: Implement _onSpinWait() intrinsic for AArch64

Evgeny Astigeevich github.com+42899633+eastig at openjdk.java.net
Fri Sep 17 11:36:11 UTC 2021


This PR is a follow-up on the discussion [“RFC: AArch64: Implementing spin pauses with ISB”](https://mail.openjdk.java.net/pipermail/hotspot-dev/2021-August/054033.html).

It adds the option `UsePauseImpl=value`, where `value` can be:

- `none`: no implementation for spin pauses. This is the default value.
- `Nnop`: use `nop` instruction for spin pauses. Optional `N` can be `2..9` to specify a number of `nop` instructions.
- `Nisb`: use `isb` instruction for spin pauses. Optional `N` can be `2..9` to specify a number of `isb` instructions.
- `Nyield`: use `yield` instruction for spin pauses. Optional `N` can be `2..9` to specify a number of `yield` instructions.

The code for the `Thread.onSpinWait` intrinsic is generated based on the value of `UsePauseImpl`.

Testing:

- `make test TEST="gtest"`: Passed
- `make run-test TEST="tier1"`: Passed
- `make run-test TEST="tier2"`: Passed
- `make run-test TEST=hotspot/jtreg/compiler/onSpinWait`: Passed

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

Commit messages:
 - Add missing header file
 - 8186670: Implement _onSpinWait() intrinsic for AArch64

Changes: https://git.openjdk.java.net/jdk/pull/5562/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=5562&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8186670
  Stats: 460 lines in 9 files changed: 458 ins; 0 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk/pull/5562.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/5562/head:pull/5562

PR: https://git.openjdk.java.net/jdk/pull/5562


More information about the hotspot-dev mailing list