On Tue, 7 Jun 2022 13:00:37 GMT, Maurizio Cimadamore <mcimadam...@openjdk.org> 
wrote:

>> This is a cleanup of the memory session implementation. The main new concept 
>> is that `MemorySessionImpl` is split into two parts: there is an 
>> implementation of memory session and then there is a state abstraction 
>> (`MemorySessionImpl.State`). This allows to share the state across multiple 
>> session views, in a more clean way. The big consequence of this change is 
>> that the routines on `ScopedMemoryAccess` now have to be defined in terms of 
>> the state abstraction (but the changes are mostly mechanical).
>> 
>> I have consolidated the implementation quite a bit, by removing all the 
>> duplicated logic for issuing similar-looking exceptions. I have also 
>> addressed an issue with `checkValidState` throwing a _new_ 
>> `WrongThreadException` instead of using a singleton (which is what the logic 
>> for closing down shared session requires, to avoid stack walks that are too 
>> deep).
>> 
>> `MemorySession.State::checkValidState` is now fully monomorphic; when 
>> looking at benchmarks, this seems to be the best solution in order to make 
>> things fast. Specializing implmentations to remove few plain checks does not 
>> buy enough, and always has the risk of adding profile pollution.
>
> Maurizio Cimadamore has updated the pull request with a new target base due 
> to a merge or a rebase. The pull request now contains 14 commits:
> 
>  - Merge branch 'master' into cleanup_memory_session_impl_state
>  - Add null check on Buffer::checkState
>  - Add docs
>    Simplify liveness check in Buffer
>    Drop redundant import in DirectBuffer
>  - Simplify checkValidState
>  - Add fastpath for implicit session state
>  - Merge branch 'master' into cleanup_memory_session_impl_keep_list
>  - Fix asNonCloseable to return self
>    Improve direct buffer code with isImplicit predicate
>  - Drop MemorySession interface type from AbstractMemorySessionImpl
>  - Simplify code by removing intermediate getUnsafeBase/getUnsafeOffset 
> methods
>  - Simplify readOnly check
>  - ... and 4 more: https://git.openjdk.org/jdk/compare/8d28734e...5b8f7246

I'm going to close this PR and re-open another against the 19 repo.

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

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

Reply via email to