Skip to content

Commit 38ca979

Browse files
committed
Pass the Ruby array size in when validating elements.
1 parent 486e2e7 commit 38ca979

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

src/main/java/org/truffleruby/core/array/library/SharedArrayStorage.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,18 @@ public SharedArrayStorage(Object storage) {
4949
* stack of adjacent objects have been shared, which may not be true at the point the storage is converted to shared
5050
* storage. */
5151
@TruffleBoundary
52-
public boolean allElementsShared() {
52+
public boolean allElementsShared(int size) {
5353
if (storage == null || storage instanceof ZeroLengthArrayStore) {
5454
return true;
5555
}
5656
ArrayStoreLibrary stores = ArrayStoreLibrary.getFactory()
5757
.getUncached(storage);
58-
var elements = stores.getIterable(storage, 0, stores.capacity(storage));
58+
var elements = stores.getIterable(storage, 0, size);
5959
for (var e : elements) {
6060
if (e == null || !(e instanceof RubyDynamicObject) || SharedObjects.isShared(e)) {
6161
continue;
6262
} else {
63-
System.err.printf("Unshared element %s.\n", e);
63+
assert false : String.format("Unshared element %s.\n", e);
6464
return false;
6565
}
6666
}

src/main/java/org/truffleruby/language/objects/shared/SharedObjects.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ public static void writeBarrier(RubyLanguage language, Object value) {
143143
private static boolean validateArray(RubyArray value) {
144144
Object storage = value.getStore();
145145
assert storage instanceof SharedArrayStorage;
146-
return ((SharedArrayStorage) storage).allElementsShared();
146+
return ((SharedArrayStorage) storage).allElementsShared(value.size);
147147
}
148148

149149
public static void propagate(RubyLanguage language, RubyDynamicObject source, Object value) {

0 commit comments

Comments
 (0)