Skip to content

Commit cd81cf2

Browse files
committed
Assert that hole elements are empty after fillHoles.
1 parent 45a10c9 commit cd81cf2

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
@@ -140,6 +140,7 @@ protected final void fillHoles(JSDynamicObject object, int internalIndex, int gr
140140
if (grown != 0) {
141141
incrementHolesCount(object, Math.abs(grown) - 1);
142142
}
143+
assert checkFillHoles(object, internalIndex, grown);
143144
}
144145

145146
@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
@@ -142,6 +142,7 @@ protected final void fillHoles(JSDynamicObject object, int internalIndex, int gr
142142
if (grown != 0) {
143143
incrementHolesCount(object, Math.abs(grown) - 1);
144144
}
145+
assert checkFillHoles(object, internalIndex, grown);
145146
}
146147

147148
@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
@@ -349,6 +349,27 @@ protected void fillHoles(JSDynamicObject object, int internalIndex, int grown, P
349349
}
350350
}
351351

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

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

0 commit comments

Comments
 (0)