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