Skip to content

Commit 52ad63f

Browse files
committed
Assert that hole elements are empty after fillHoles.
1 parent 0927777 commit 52ad63f

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/runtime/array/dyn/AbstractJSObjectArray.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ protected final void fillHoles(JSDynamicObject object, int internalIndex, int gr
141141
if (grown != 0) {
142142
incrementHolesCount(object, Math.abs(grown) - 1);
143143
}
144+
assert checkFillHoles(object, internalIndex, grown);
144145
}
145146

146147
@Override

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/runtime/array/dyn/AbstractObjectArray.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ protected final void fillHoles(JSDynamicObject object, int internalIndex, int gr
143143
if (grown != 0) {
144144
incrementHolesCount(object, Math.abs(grown) - 1);
145145
}
146+
assert checkFillHoles(object, internalIndex, grown);
146147
}
147148

148149
@Override

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/runtime/array/dyn/AbstractWritableArray.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,27 @@ protected void fillHoles(JSDynamicObject object, int internalIndex, int grown, N
354354
}
355355
}
356356

357+
protected final boolean checkFillHoles(JSDynamicObject object, int internalIndex, int grown) {
358+
int start;
359+
int end;
360+
if (grown > 1) {
361+
start = internalIndex - grown + 1;
362+
end = internalIndex;
363+
} else if (grown < -1) {
364+
start = internalIndex + 1;
365+
end = internalIndex - grown;
366+
} else {
367+
return true;
368+
}
369+
370+
for (int i = start; i < end; i++) {
371+
if (!isHolePrepared(object, i)) {
372+
return false;
373+
}
374+
}
375+
return true;
376+
}
377+
357378
public abstract AbstractWritableArray toDouble(JSDynamicObject object, long index, double value);
358379

359380
public abstract AbstractWritableArray toObject(JSDynamicObject object, long index, Object value);

0 commit comments

Comments
 (0)