sixcooler 15 years ago
parent 6fde481ef4
commit bfe4693e9a

@ -208,6 +208,11 @@ public class RowCollection implements Iterable<Row.Entry> {
return this.rowdef;
}
protected final int maxIntFromLong(long val) {
if (val >= Integer.MAX_VALUE) return Integer.MAX_VALUE;
return (int) val;
}
protected final long neededSpaceForEnsuredSize(final int elements, final boolean forcegc) {
assert elements > 0 : "elements = " + elements;
final long needed = elements * rowdef.objectsize;
@ -224,12 +229,12 @@ public class RowCollection implements Iterable<Row.Entry> {
protected final void ensureSize(final int elements) throws RowSpaceExceededException {
if (elements == 0) return;
final long allocram = neededSpaceForEnsuredSize(elements, true);
final int allocram = maxIntFromLong(neededSpaceForEnsuredSize(elements, true));
if (allocram == 0) return;
assert allocram > chunkcache.length : "wrong alloc computation: allocram = " + allocram + ", chunkcache.length = " + chunkcache.length;
if (!MemoryControl.request(allocram, true)) throw new RowSpaceExceededException(allocram, "RowCollection grow");
try {
final byte[] newChunkcache = new byte[(int) allocram]; // increase space
final byte[] newChunkcache = new byte[allocram]; // increase space
System.arraycopy(chunkcache, 0, newChunkcache, 0, chunkcache.length);
chunkcache = newChunkcache;
} catch (OutOfMemoryError e) {

Loading…
Cancel
Save