C/Wasm: fix issue in GC

This commit is contained in:
Alexey Andreev 2021-12-16 18:39:26 +03:00
parent 15466bad93
commit ce5e3bfeb7

View File

@ -115,11 +115,20 @@ public final class GC {
return; return;
} }
collectGarbageImpl(size); collectGarbageImpl(size);
if (currentChunk.size != size && currentChunk.size <= size + MIN_CHUNK_SIZE && !getNextChunkIfPossible(size)) { if (!hasAvailableMemory(size)) {
collectGarbageFullImpl(size);
if (!hasAvailableMemory(size)) {
ExceptionHandling.printStack(); ExceptionHandling.printStack();
outOfMemory(); outOfMemory();
} }
} }
}
private static boolean hasAvailableMemory(int size) {
return currentChunk.size == size
|| currentChunk.size > size + MIN_CHUNK_SIZE
|| getNextChunkIfPossible(size);
}
private static boolean getNextChunkIfPossible(int size) { private static boolean getNextChunkIfPossible(int size) {
while (true) { while (true) {