Re: RFR: 8314480: Memory ordering spec updates in java.lang.ref [v29]
On Wed, 8 May 2024 08:33:31 GMT, Alan Bateman wrote: >> Brent Christian has updated the pull request incrementally with one >> additional commit since the last revision: >> >> small grammar fixes > > src/java.base/share/classes/java/lang/ref/Cleaner.java line 224: > >> 222: * Actions in a thread prior to calling {@code Cleaner.register()} >> 223: * > href="{@docRoot}/java.base/java/util/concurrent/package-summary.html#MemoryVisibility">happen-before >> 224: * the cleaning action is run by the Cleaner's thread. > > In passing, you could reduces the html refs to > "package-summary.html#MemoryConsistency" and > "package-summary.html#MemoryVisibility" as it's the same package/directory. MemoryVisibility is in java.util.concurrent - PR Review Comment: https://git.openjdk.org/jdk/pull/16644#discussion_r1594785182
Re: RFR: 8314480: Memory ordering spec updates in java.lang.ref [v29]
On Mon, 29 Apr 2024 21:17:24 GMT, Brent Christian wrote: >> Classes in the `java.lang.ref` package would benefit from an update to bring >> the spec in line with how the VM already behaves. The changes would focus on >> _happens-before_ edges at some key points during reference processing. >> >> A couple key things we want to be able to say are: >> - `Reference.reachabilityFence(x)` _happens-before_ reference processing >> occurs for 'x'. >> - `Cleaner.register()` _happens-before_ the Cleaner thread runs the >> registered cleaning action. >> >> This will bring Cleaner in line (or close) with the memory visibility >> guarantees made for finalizers in [JLS >> 17.4.5](https://docs.oracle.com/javase/specs/jls/se18/html/jls-17.html#jls-17.4.5): >> _"There is a happens-before edge from the end of a constructor of an object >> to the start of a finalizer (§12.6) for that object."_ > > Brent Christian has updated the pull request incrementally with one > additional commit since the last revision: > > small grammar fixes src/java.base/share/classes/java/lang/ref/ReferenceQueue.java line 39: > 37: * > 38: * href="{@docRoot}/java.base/java/lang/ref/package-summary.html#MemoryConsistency">Memory > consistency effects: > 39: * The enqueueing of a reference on a queue (by the garbage collector, or > by a In passing, I wonder if you're actually meant to say "on a queue" here. Elsewhere the API docs speak of adding and removing, e.g. the enqueue method speaks of adding a reference "to" the queue. - PR Review Comment: https://git.openjdk.org/jdk/pull/16644#discussion_r1593659540
Re: RFR: 8314480: Memory ordering spec updates in java.lang.ref [v29]
On Mon, 29 Apr 2024 21:17:24 GMT, Brent Christian wrote: >> Classes in the `java.lang.ref` package would benefit from an update to bring >> the spec in line with how the VM already behaves. The changes would focus on >> _happens-before_ edges at some key points during reference processing. >> >> A couple key things we want to be able to say are: >> - `Reference.reachabilityFence(x)` _happens-before_ reference processing >> occurs for 'x'. >> - `Cleaner.register()` _happens-before_ the Cleaner thread runs the >> registered cleaning action. >> >> This will bring Cleaner in line (or close) with the memory visibility >> guarantees made for finalizers in [JLS >> 17.4.5](https://docs.oracle.com/javase/specs/jls/se18/html/jls-17.html#jls-17.4.5): >> _"There is a happens-before edge from the end of a constructor of an object >> to the start of a finalizer (§12.6) for that object."_ > > Brent Christian has updated the pull request incrementally with one > additional commit since the last revision: > > small grammar fixes src/java.base/share/classes/java/lang/ref/Reference.java line 393: > 391: * Clears this reference object. Invoking this method does not > enqueue this > 392: * object, and the garbage collector will no longer clear or enqueue > this > 393: * object. "will no longer clear" means that it won't do it again, if you see what I mean. I think this would be easier to read if changed to "will not clear ...". - PR Review Comment: https://git.openjdk.org/jdk/pull/16644#discussion_r1593651535
Re: RFR: 8314480: Memory ordering spec updates in java.lang.ref [v29]
On Mon, 29 Apr 2024 21:17:24 GMT, Brent Christian wrote: >> Classes in the `java.lang.ref` package would benefit from an update to bring >> the spec in line with how the VM already behaves. The changes would focus on >> _happens-before_ edges at some key points during reference processing. >> >> A couple key things we want to be able to say are: >> - `Reference.reachabilityFence(x)` _happens-before_ reference processing >> occurs for 'x'. >> - `Cleaner.register()` _happens-before_ the Cleaner thread runs the >> registered cleaning action. >> >> This will bring Cleaner in line (or close) with the memory visibility >> guarantees made for finalizers in [JLS >> 17.4.5](https://docs.oracle.com/javase/specs/jls/se18/html/jls-17.html#jls-17.4.5): >> _"There is a happens-before edge from the end of a constructor of an object >> to the start of a finalizer (§12.6) for that object."_ > > Brent Christian has updated the pull request incrementally with one > additional commit since the last revision: > > small grammar fixes src/java.base/share/classes/java/lang/ref/Cleaner.java line 224: > 222: * Actions in a thread prior to calling {@code Cleaner.register()} > 223: * href="{@docRoot}/java.base/java/util/concurrent/package-summary.html#MemoryVisibility">happen-before > 224: * the cleaning action is run by the Cleaner's thread. In passing, you could reduces the html refs to "package-summary.html#MemoryConsistency" and "package-summary.html#MemoryVisibility" as it's the same package/directory. - PR Review Comment: https://git.openjdk.org/jdk/pull/16644#discussion_r159364
Re: RFR: 8314480: Memory ordering spec updates in java.lang.ref [v29]
> Classes in the `java.lang.ref` package would benefit from an update to bring > the spec in line with how the VM already behaves. The changes would focus on > _happens-before_ edges at some key points during reference processing. > > A couple key things we want to be able to say are: > - `Reference.reachabilityFence(x)` _happens-before_ reference processing > occurs for 'x'. > - `Cleaner.register()` _happens-before_ the Cleaner thread runs the > registered cleaning action. > > This will bring Cleaner in line (or close) with the memory visibility > guarantees made for finalizers in [JLS > 17.4.5](https://docs.oracle.com/javase/specs/jls/se18/html/jls-17.html#jls-17.4.5): > _"There is a happens-before edge from the end of a constructor of an object > to the start of a finalizer (§12.6) for that object."_ Brent Christian has updated the pull request incrementally with one additional commit since the last revision: small grammar fixes - Changes: - all: https://git.openjdk.org/jdk/pull/16644/files - new: https://git.openjdk.org/jdk/pull/16644/files/5f90b5d8..a41e6fc2 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk=16644=28 - incr: https://webrevs.openjdk.org/?repo=jdk=16644=27-28 Stats: 3 lines in 1 file changed: 0 ins; 0 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/16644.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/16644/head:pull/16644 PR: https://git.openjdk.org/jdk/pull/16644