> 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

Vladimir Ivanov has updated the pull request with a new target base due to a 
merge or a rebase. The incremental webrev excludes the unrelated changes 
brought in by the merge/rebase. The pull request contains three additional 
commits since the last revision:

 - Minor cleanups
 - Merge branch 'master' into 8257189.mh.customization.concurrent
 - Improve concurrent LF customization

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/1472/files
  - new: https://git.openjdk.java.net/jdk/pull/1472/files/1780f57f..9cf759ed

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=1472&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=1472&range=00-01

  Stats: 23494 lines in 558 files changed: 13055 ins; 3034 del; 7405 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

Reply via email to