RFR: 8238761: Asynchronous handshakes [v5]
David Holmes
david.holmes at oracle.com
Thu Sep 24 04:28:20 UTC 2020
<trimming>
On 23/09/2020 8:11 pm, Robbin Ehn wrote:
> On Wed, 23 Sep 2020 03:04:39 GMT, David Holmes <dholmes at openjdk.org> wrote:
>
>>> Robbin Ehn has updated the pull request incrementally with one additional commit since the last revision:
>>>
>>> Update after Coleen
>>
>> src/hotspot/share/runtime/handshake.cpp line 63:
>>
>>> 61: };
>>> 62:
>>> 63: class AsyncHandshakeOperation : public HandshakeOperation {
>>
>> This doesn't quite make sense. If you have an AsyncHandshakeOperation as a distinct subclass then it should not be
>> possible for is_async() on a HandshakeOperation to return true - but it can because it can be passed an
>> AsyncHandshakeClosure when constructed. If you want async and non-async operations to be distinct types then you will
>> need to restrict how the base class is constructed, and provide a protected constructor that just takes an
>> AsyncHandShakeClosure.
>
> This implementation code not part of the interface.
I find it hard to tell which classes form which.
> By casting the AsyncHandShakeClosure to a HandshakeClosure before instantiating the HandshakeOperation you can still
> get is_async() to return true. And there are a loads of other user error which can be done like stack allocating
> AsyncHandshakeOperation. Protecting against all those kinds of errors requires a lot of more code.
Can we at least declare a protected constructor for HandshakeOperation
that takes the AsyncHandshakeClosure, so that an accidental creation of
"new HandShakeperation(anAsyncClosure)" will be prevented?
Thanks,
David
> -------------
>
> PR: https://git.openjdk.java.net/jdk/pull/151
>
More information about the serviceability-dev
mailing list