On Wed, 11 Nov 2020 05:38:08 GMT, Hui Shi <h...@openjdk.org> wrote:

>> …AccessorImpl object
>> 
>> We met real problem when using protobuf with option optimized for code size, 
>> detail in JBS https://bugs.openjdk.java.net/browse/JDK-8255883
>> 
>> Optimize solution is adding a new boolean field to detect concurrent method 
>> accessor generation in same NativeMethodAccessorImpl object, only one thread 
>> is allowed to generate accessor, other threads still invoke in jni way until 
>> parent's delegator is updated from NativeMethodAccessorImpl  to generated 
>> accessor.
>> 
>> In common case, extra overhead is an atomic operation, compared with method 
>> accessor generate, this cost is trivial.
>
> Hui Shi has refreshed the contents of this pull request, and previous commits 
> have been removed. The incremental views will show differences compared to 
> the previous content of the PR.

src/java.base/share/classes/jdk/internal/reflect/NativeConstructorAccessorImpl.java
 line 44:

> 42:     private DelegatingConstructorAccessorImpl parent;
> 43:     private int numInvocations;
> 44:     private int generated;

What is the reason for using an int? I remember there was a suggestion for 
three states but two states seems okay so curious why it was changed from 
boolean to int.
The restoring to 0 in the event of failure should probably be a volatile-write. 
Might be clearer to declare it as a volatile.

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

PR: https://git.openjdk.java.net/jdk/pull/1070

Reply via email to