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