mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 22:34:27 +02:00
8248233: Avoid superfluous Class::isRecord invocations during deserialization
Co-authored-by: Peter Levart <peter.levart@gmail.com> Reviewed-by: redestad, plevart
This commit is contained in:
parent
34755c3528
commit
42d3bad0b1
2 changed files with 6 additions and 13 deletions
|
@ -2139,11 +2139,6 @@ public class ObjectInputStream
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("preview")
|
|
||||||
private static boolean isRecord(Class<?> cls) {
|
|
||||||
return cls.isRecord();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads and returns "ordinary" (i.e., not a String, Class,
|
* Reads and returns "ordinary" (i.e., not a String, Class,
|
||||||
* ObjectStreamClass, array, or enum constant) object, or null if object's
|
* ObjectStreamClass, array, or enum constant) object, or null if object's
|
||||||
|
@ -2182,7 +2177,7 @@ public class ObjectInputStream
|
||||||
handles.markException(passHandle, resolveEx);
|
handles.markException(passHandle, resolveEx);
|
||||||
}
|
}
|
||||||
|
|
||||||
final boolean isRecord = cl != null && isRecord(cl);
|
final boolean isRecord = desc.isRecord();
|
||||||
if (isRecord) {
|
if (isRecord) {
|
||||||
assert obj == null;
|
assert obj == null;
|
||||||
obj = readRecord(desc);
|
obj = readRecord(desc);
|
||||||
|
|
|
@ -747,13 +747,6 @@ public class ObjectStreamClass implements Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.cl = cl;
|
this.cl = cl;
|
||||||
if (cl != null) {
|
|
||||||
this.isRecord = isRecord(cl);
|
|
||||||
// canonical record constructor is shared
|
|
||||||
this.canonicalCtr = osc.canonicalCtr;
|
|
||||||
// cache of deserialization constructors is shared
|
|
||||||
this.deserializationCtrs = osc.deserializationCtrs;
|
|
||||||
}
|
|
||||||
this.resolveEx = resolveEx;
|
this.resolveEx = resolveEx;
|
||||||
this.superDesc = superDesc;
|
this.superDesc = superDesc;
|
||||||
name = model.name;
|
name = model.name;
|
||||||
|
@ -770,6 +763,11 @@ public class ObjectStreamClass implements Serializable {
|
||||||
|
|
||||||
if (osc != null) {
|
if (osc != null) {
|
||||||
localDesc = osc;
|
localDesc = osc;
|
||||||
|
isRecord = localDesc.isRecord;
|
||||||
|
// canonical record constructor is shared
|
||||||
|
canonicalCtr = localDesc.canonicalCtr;
|
||||||
|
// cache of deserialization constructors is shared
|
||||||
|
deserializationCtrs = localDesc.deserializationCtrs;
|
||||||
writeObjectMethod = localDesc.writeObjectMethod;
|
writeObjectMethod = localDesc.writeObjectMethod;
|
||||||
readObjectMethod = localDesc.readObjectMethod;
|
readObjectMethod = localDesc.readObjectMethod;
|
||||||
readObjectNoDataMethod = localDesc.readObjectNoDataMethod;
|
readObjectNoDataMethod = localDesc.readObjectNoDataMethod;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue