Skip to content

Commit 0936504

Browse files
committed
Add JavaObjectInputStreamReadString and JavaObjectInputStreamAccess
1 parent 2105ff6 commit 0936504

File tree

20 files changed

+65
-61
lines changed

20 files changed

+65
-61
lines changed

src/java.base/share/classes/java/io/ObjectInputStream.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
import java.util.Objects;
3939

4040
import jdk.internal.access.JavaLangAccess;
41+
import jdk.internal.access.JavaObjectInputStreamAccess;
42+
import jdk.internal.access.JavaObjectInputStreamReadString;
4143
import jdk.internal.access.SharedSecrets;
4244
import jdk.internal.event.DeserializationEvent;
4345
import jdk.internal.misc.Unsafe;
@@ -4036,8 +4038,8 @@ private static Object cloneArray(Object array) {
40364038
}
40374039

40384040
static {
4039-
SharedSecrets.setJavaObjectInputStreamAccess(ObjectInputStream::checkArray);
4040-
SharedSecrets.setJavaObjectInputStreamReadString(ObjectInputStream::readString);
4041+
SharedSecrets.set(JavaObjectInputStreamAccess.class, ObjectInputStream::checkArray);
4042+
SharedSecrets.set(JavaObjectInputStreamReadString.class, ObjectInputStream::readString);
40414043
}
40424044

40434045
}

src/java.base/share/classes/java/util/ArrayDeque.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
import java.io.Serializable;
3838
import java.util.function.Consumer;
3939
import java.util.function.Predicate;
40+
41+
import jdk.internal.access.JavaObjectInputStreamAccess;
4042
import jdk.internal.access.SharedSecrets;
4143
import jdk.internal.util.ArraysSupport;
4244

@@ -1199,7 +1201,7 @@ private void readObject(java.io.ObjectInputStream s)
11991201

12001202
// Read in size and allocate array
12011203
int size = s.readInt();
1202-
SharedSecrets.getJavaObjectInputStreamAccess().checkArray(s, Object[].class, size + 1);
1204+
SharedSecrets.get(JavaObjectInputStreamAccess.class).checkArray(s, Object[].class, size + 1);
12031205
elements = new Object[size + 1];
12041206
this.tail = size;
12051207

src/java.base/share/classes/java/util/ArrayList.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import java.util.function.Consumer;
2929
import java.util.function.Predicate;
3030
import java.util.function.UnaryOperator;
31+
32+
import jdk.internal.access.JavaObjectInputStreamAccess;
3133
import jdk.internal.access.SharedSecrets;
3234
import jdk.internal.util.ArraysSupport;
3335

@@ -982,7 +984,7 @@ private void readObject(java.io.ObjectInputStream s)
982984

983985
if (size > 0) {
984986
// like clone(), allocate array based upon size not capacity
985-
SharedSecrets.getJavaObjectInputStreamAccess().checkArray(s, Object[].class, size);
987+
SharedSecrets.get(JavaObjectInputStreamAccess.class).checkArray(s, Object[].class, size);
986988
Object[] elements = new Object[size];
987989

988990
// Read in all elements in the proper order.

src/java.base/share/classes/java/util/Collections.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
import java.util.stream.IntStream;
4242
import java.util.stream.Stream;
4343
import java.util.stream.StreamSupport;
44+
45+
import jdk.internal.access.JavaObjectInputStreamAccess;
4446
import jdk.internal.access.SharedSecrets;
4547
import jdk.internal.vm.annotation.AOTSafeClassInitializer;
4648

@@ -5664,7 +5666,7 @@ public Spliterator<E> spliterator() {
56645666
@java.io.Serial
56655667
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
56665668
ois.defaultReadObject();
5667-
SharedSecrets.getJavaObjectInputStreamAccess().checkArray(ois, Object[].class, n);
5669+
SharedSecrets.get(JavaObjectInputStreamAccess.class).checkArray(ois, Object[].class, n);
56685670
}
56695671
}
56705672

src/java.base/share/classes/java/util/HashMap.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
import java.util.function.BiFunction;
3636
import java.util.function.Consumer;
3737
import java.util.function.Function;
38+
39+
import jdk.internal.access.JavaObjectInputStreamAccess;
3840
import jdk.internal.access.SharedSecrets;
3941

4042
/**
@@ -1548,7 +1550,7 @@ private void readObject(ObjectInputStream s)
15481550

15491551
// Check Map.Entry[].class since it's the nearest public type to
15501552
// what we're actually creating.
1551-
SharedSecrets.getJavaObjectInputStreamAccess().checkArray(s, Map.Entry[].class, cap);
1553+
SharedSecrets.get(JavaObjectInputStreamAccess.class).checkArray(s, Map.Entry[].class, cap);
15521554
@SuppressWarnings({"rawtypes","unchecked"})
15531555
Node<K,V>[] tab = (Node<K,V>[])new Node[cap];
15541556
table = tab;

src/java.base/share/classes/java/util/HashSet.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
package java.util;
2727

2828
import java.io.InvalidObjectException;
29+
30+
import jdk.internal.access.JavaObjectInputStreamAccess;
2931
import jdk.internal.access.SharedSecrets;
3032

3133
/**
@@ -340,7 +342,7 @@ private void readObject(java.io.ObjectInputStream s)
340342
// added, so check it before construction. Call HashMap.tableSizeFor to compute the
341343
// actual allocation size. Check Map.Entry[].class since it's the nearest public type to
342344
// what is actually created.
343-
SharedSecrets.getJavaObjectInputStreamAccess()
345+
SharedSecrets.get(JavaObjectInputStreamAccess.class)
344346
.checkArray(s, Map.Entry[].class, HashMap.tableSizeFor(capacity));
345347

346348
// Create backing HashMap

src/java.base/share/classes/java/util/Hashtable.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import java.util.function.BiConsumer;
3030
import java.util.function.Function;
3131
import java.util.function.BiFunction;
32+
33+
import jdk.internal.access.JavaObjectInputStreamAccess;
3234
import jdk.internal.access.SharedSecrets;
3335
import jdk.internal.util.ArraysSupport;
3436

@@ -1298,7 +1300,7 @@ void readHashtable(ObjectInputStream s)
12981300

12991301
// Check Map.Entry[].class since it's the nearest public type to
13001302
// what we're actually creating.
1301-
SharedSecrets.getJavaObjectInputStreamAccess().checkArray(s, Map.Entry[].class, length);
1303+
SharedSecrets.get(JavaObjectInputStreamAccess.class).checkArray(s, Map.Entry[].class, length);
13021304
Hashtable.UnsafeHolder.putLoadFactor(this, lf);
13031305
table = new Entry<?,?>[length];
13041306
threshold = (int)Math.min(length * lf, MAX_ARRAY_SIZE + 1);

src/java.base/share/classes/java/util/IdentityHashMap.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import java.util.function.BiConsumer;
3232
import java.util.function.BiFunction;
3333
import java.util.function.Consumer;
34+
35+
import jdk.internal.access.JavaObjectInputStreamAccess;
3436
import jdk.internal.access.SharedSecrets;
3537

3638
/**
@@ -1327,7 +1329,7 @@ private void readObject(ObjectInputStream s)
13271329
throw new java.io.StreamCorruptedException
13281330
("Illegal mappings count: " + size);
13291331
int cap = capacity(size);
1330-
SharedSecrets.getJavaObjectInputStreamAccess().checkArray(s, Object[].class, cap*2);
1332+
SharedSecrets.get(JavaObjectInputStreamAccess.class).checkArray(s, Object[].class, cap*2);
13311333
this.size = size;
13321334
init(cap);
13331335

src/java.base/share/classes/java/util/ImmutableCollections.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import java.util.function.Predicate;
4040
import java.util.function.UnaryOperator;
4141

42+
import jdk.internal.access.JavaObjectInputStreamAccess;
4243
import jdk.internal.access.JavaUtilCollectionAccess;
4344
import jdk.internal.access.SharedSecrets;
4445
import jdk.internal.misc.CDS;
@@ -1506,7 +1507,7 @@ private void readObject(ObjectInputStream ois) throws IOException, ClassNotFound
15061507
throw new InvalidObjectException("negative length " + len);
15071508
}
15081509

1509-
SharedSecrets.getJavaObjectInputStreamAccess().checkArray(ois, Object[].class, len);
1510+
SharedSecrets.get(JavaObjectInputStreamAccess.class).checkArray(ois, Object[].class, len);
15101511
Object[] a = new Object[len];
15111512
for (int i = 0; i < len; i++) {
15121513
a[i] = ois.readObject();

src/java.base/share/classes/java/util/PriorityQueue.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727

2828
import java.util.function.Consumer;
2929
import java.util.function.Predicate;
30+
31+
import jdk.internal.access.JavaObjectInputStreamAccess;
3032
import jdk.internal.access.SharedSecrets;
3133
import jdk.internal.util.ArraysSupport;
3234

@@ -789,7 +791,7 @@ private void readObject(java.io.ObjectInputStream s)
789791
// Read in (and discard) array length
790792
s.readInt();
791793

792-
SharedSecrets.getJavaObjectInputStreamAccess().checkArray(s, Object[].class, size);
794+
SharedSecrets.get(JavaObjectInputStreamAccess.class).checkArray(s, Object[].class, size);
793795
final Object[] es = queue = new Object[Math.max(size, 1)];
794796

795797
// Read in all elements.

0 commit comments

Comments
 (0)