Skip to content

Commit 02d2819

Browse files
author
Stefan Anzinger
committed
[GR-20545] IndexedValueMap: Do not extend array when out of bounds is set to null.
PullRequest: graal/5503
2 parents aadd9ca + efa9cd5 commit 02d2819

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/dfa/MarkBasePointersPhase.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,9 @@ private final class BasePointersSet extends ValueSet<Marker.BasePointersSet> {
6969
private BasePointersSet(BasePointersSet other) {
7070
variables = new IndexedValueMap(other.variables);
7171
// Deep copy.
72-
baseDerivedRefs = new HashMap<>();
72+
baseDerivedRefs = new HashMap<>(other.baseDerivedRefs.size());
7373
for (Map.Entry<Integer, Set<Value>> entry : other.baseDerivedRefs.entrySet()) {
74-
Set<Value> s = new HashSet<>();
75-
s.addAll(entry.getValue());
74+
Set<Value> s = new HashSet<>(entry.getValue());
7675
baseDerivedRefs.put(entry.getKey(), s);
7776
}
7877
}
@@ -121,8 +120,7 @@ public void putAll(BasePointersSet v) {
121120
Set<Value> derivedRefs = baseDerivedRefs.get(k);
122121
if (derivedRefs == null) {
123122
// Deep copy.
124-
Set<Value> s = new HashSet<>();
125-
s.addAll(derivedRefsOther);
123+
Set<Value> s = new HashSet<>(derivedRefsOther);
126124
baseDerivedRefs.put(k, s);
127125
} else {
128126
derivedRefs.addAll(derivedRefsOther);

compiler/src/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/util/IndexedValueMap.java

+3
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ public Value get(int index) {
6565

6666
public void put(int index, Value value) {
6767
if (values.length <= index) {
68+
if (value == null) {
69+
return;
70+
}
6871
Value[] newValues = new Value[index + 1];
6972
if (values.length > 0) {
7073
System.arraycopy(values, 0, newValues, 0, values.length);

0 commit comments

Comments
 (0)