RFR: JDK-8286666: JEP 429: Implementation of Scoped Values (Incubator)

ExE Boss duke at openjdk.org
Tue Nov 15 14:20:53 UTC 2022


On Wed, 2 Nov 2022 16:23:34 GMT, Andrew Haley <aph at openjdk.org> wrote:

> JEP 429 implementation.

src/java.base/share/classes/java/lang/Thread.java line 1610:

> 1608:             ensureMaterializedForStackWalk(bindings);
> 1609:             task.run();
> 1610:             Reference.reachabilityFence(bindings);

This should probably be in a `try`‑`finally` block:
Suggestion:

            try {
                task.run();
            } finally {
                Reference.reachabilityFence(bindings);
            }

src/jdk.incubator.concurrent/share/classes/jdk/incubator/concurrent/ScopedValue.java line 481:

> 479:         }
> 480:  */
> 481:         return findBinding() != Snapshot.NIL;

This should probably call `Cache.put(this, value)` when `findBinding()` isn’t `Snapshot.NIL`, since it’s likely that `isBound()` will most commonly be used in the form of:

if (SCOPED_VALUE.isBound()) {
	final var value = SCOPED_VALUE.get();
	// do something with `value`
}


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

Suggestion:

        var value = findBinding();
        if (value == Snapshot.NIL) {
            return false;
        }
        Cache.put(this, value);
        return true;

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

PR: https://git.openjdk.org/jdk/pull/10952



More information about the security-dev mailing list