RFR: 8257189: Handle concurrent updates of MH.form better

Vladimir Ivanov vlivanov at openjdk.java.net
Thu Nov 26 21:59:03 UTC 2020


Concurrent updates may lead to redundant LambdaForms created and unnecessary class loading when those are compiled. 

Most notably, it severely affects MethodHandle customization: when a MethodHandle is called from multiple threads, every thread starts customization which takes enough time for other threads to join, but only one of those customizations will be picked.

Coordination between threads requesting the updates and letting a single thread proceed avoids the aforementioned problem. Moreover, there's no need to wait until the update in-flight is over: all other threads (except the one performing the update) can just proceed with the invocation using the existing MH.form. 

Testing:
- manually monitored the behavior on a stress test from [JDK-8252049](https://bugs.openjdk.java.net/browse/JDK-8252049)
- tier1-4

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

Commit messages:
 - Improve concurrent LF customization

Changes: https://git.openjdk.java.net/jdk/pull/1472/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1472&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8257189
  Stats: 90 lines in 5 files changed: 38 ins; 20 del; 32 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1472.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1472/head:pull/1472

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


More information about the core-libs-dev mailing list