RFR: 8358343: [leyden] Drop notify_all in CompilationPolicyUtils::Queue::pop

Aleksey Shipilev shade at openjdk.org
Tue Jun 3 18:14:52 UTC 2025


Found this when reading premain-vs-mainline webrev. Mainline does not have `notify_all` in this method:
https://github.com/openjdk/jdk/blob/c382da579884c28f2765b2c6ba68c0ad4fdcb2ce/src/hotspot/share/compiler/compilationPolicy.hpp#L85-L92

But if you remove `notify_all()` in `premain`, then tests start to deadlock, see bug for a sample. The culprit is `CompilationPolicy::flush_replay_training_at_init`, which is only present in premain. I fixed it by using timed waits, which obviates the need for extra notifications. We only enter this method with `-XX:+AOTVerifyTrainingData`, so we don't care much about its performance. This is IMO better than doing a questionable `notify_all` followed by `wait` in load-bearing code.

Additional testing:
 - [x] Linux x86_64 server fastdebug, `runtime/cds` (5x, no timeouts yet; still running more iterations)

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

Commit messages:
 - Fix

Changes: https://git.openjdk.org/leyden/pull/74/files
  Webrev: https://webrevs.openjdk.org/?repo=leyden&pr=74&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8358343
  Stats: 5 lines in 2 files changed: 3 ins; 1 del; 1 mod
  Patch: https://git.openjdk.org/leyden/pull/74.diff
  Fetch: git fetch https://git.openjdk.org/leyden.git pull/74/head:pull/74

PR: https://git.openjdk.org/leyden/pull/74


More information about the leyden-dev mailing list