[foreign-memaccess] RFR: Simplify MemoryScope implementation to use StampedLock

Paul Sandoz psandoz at openjdk.java.net
Wed May 13 18:16:35 UTC 2020


On Wed, 13 May 2020 18:01:17 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

> I've been playing around a bit and discussed this offline with @JornVernee too. A realization I had some time ago is
> that what we're trying to do here is a read/write lock, where multiple acquire can occur at the same time, but where
> close of the root should be exclusive. I think all the machinery around `CLOSING` is essentially due to the code trying
> to mimic that pattern.  This patch simplifies over the status quo, by using a `StampedLock` instead of managing races
> manually through a `CLOSING` state. The tweaked implementation also adds back the atomicity w.r.t. close() vs. dup()
> which was seeked in a previous attempt (see https://git.openjdk.java.net/panama-foreign/pull/160). Also, since now
> there some guarantee that no acquire can take place while a close is also taking place (and pending acquires will be
> invalidated - using the optimistic read logic), then we can just use a single long adder instead of two.  The state is
> also simplified, since we just need a boolean flag.  I ran the `ParallelSum` benchmark and could not spot any obvious
> regression compared to the previous code.

Very nice!

src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/MemoryScope.java line 154:

> 153:                         continue;
> 154:                     checkAliveConfined(); // plain read is enough here (either successful optimistic read, or ful
> read lock) 155:

s/ful/full

src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/MemoryScope.java line 158:

> 157:                     acquired.increment();
> 158:                     // did a call to close() occurred since we acquired the lock?
> 159:                     if (lock.validate(stamp)) {

s/occurred/occur

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

Marked as reviewed by psandoz (Committer).

PR: https://git.openjdk.java.net/panama-foreign/pull/163


More information about the panama-dev mailing list