Hi Peter,

 199     private Map<ObjectStreamFieldsKey, MethodHandle> deserializationCtrs;

Change to be either ConcurrentMap or ConcurrentHashMap, thereby making it 
clearer when using.


2679         private static MethodHandle defaultValueExtractorFor(Class<?> 
pType) {

Can the implementation use MethodHandles,zero? e.g.

  return MethodHandles.dropArguments(MethodHandles.zero(pType), 0, 
byte[].class, Object[].class);
 
Paul.

> On Jun 16, 2020, at 8:15 AM, Chris Hegarty <chris.hega...@oracle.com> wrote:
> 
> Hi Peter,
> 
>> On 14 Jun 2020, at 17:28, Peter Levart <peter.lev...@gmail.com> wrote:
>> 
>> ...
>> 
>> [2] 
>> http://cr.openjdk.java.net/~plevart/jdk-dev/RecordsDeserialization/webrev.01/
>> 
> I think that this is very good. It’s clever to build a chain of method 
> handles that can be invoked with the stream field values. This is a nice 
> separation between the shape of the data and the actual stream data.
> 
> The caching is on a per-stream-field shape basis, which should be consistent 
> in the common case, but of course is not always guaranteed to be the case, 
> hence the need for the cache. I think that this should be fine, since the 
> ObjectStreamClass ( that holds the cache ) is already itself cached as a weak 
> reference. But I did wonder if the size of this new cache should be limited. 
> Probably not worth the complexity unless it is an obvious issue.
> 
> All the serailizable records tests pass successfully with your patch. Good. I 
> did however notice that there is just a single test, DefaultValuesTest, that 
> exercises different stream shapes for the same class in the stream. Would be 
> good to expand coverage in this area, but of course some lower-level 
> test-specific building blocks will be needed help build the specially crafted 
> byte streams - I can help with this.
> 
> Overall I think that this change is good.
> 
> -Chris.
> 

Reply via email to