RFR: 8256480: Refactor ObjectInputStream field reader implementation

Brent Christian brent.christian at oracle.com
Thu Nov 19 00:24:52 UTC 2020


Hi, Roger.

The change looks good.  I just noticed a couple small things:

2324             for (int i = 0; i < slots.length-1; i++) {
2325                 new FieldValues(slots[i].desc, true);

The slots[i].hasData check is no longer performed here.

2561             primValues = new byte[desc.getPrimDataSize()];
2562             objValues = new Object[desc.getNumObjFields()];

In defaultReadFields(), the arrays would remain null in the case of a 0 
from getPrimDataSize() or getNumObjFields().  In the new code, 0-length 
arrays are created.

Thanks,
-Brent

On 11/18/20 9:39 AM, Roger Riggs wrote:
> ObjectInputStream has nearly identical but separate implementations to read values from the stream.
> Both implementations read primitive and object values from the stream and return an object holding the values.
> OIS.readFields() uses the internal class GetFieldImpl while OIS.defaultReadObject and reading records uses the internal class FieldValues.
> The behavioral difference between the two is whether dependencies are tracked in the object handle table or not.
> 
> The classes are merged, retaining the internal FieldValues name and the behavior to track dependencies or not.
> The constructor is passed the class descriptor and flag to track or not; it reads and saves the values from the stream.
> The callers are updated to call the merge FieldValues methods.
> 
> There is no change in behavior; all current tests pass.
> 
> -------------
> 
> Commit messages:
>   - 8256480: Refactor ObjectInputStream field reader implementation
> 
> Changes: https://git.openjdk.java.net/jdk/pull/1296/files
>   Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1296&range=00
>    Issue: https://bugs.openjdk.java.net/browse/JDK-8256480
>    Stats: 157 lines in 1 file changed: 26 ins; 78 del; 53 mod
>    Patch: https://git.openjdk.java.net/jdk/pull/1296.diff
>    Fetch: git fetch https://git.openjdk.java.net/jdk pull/1296/head:pull/1296
> 
> PR: https://git.openjdk.java.net/jdk/pull/1296
> 


More information about the core-libs-dev mailing list