Skip to content

Commit abbb57b

Browse files
committed
Restore freeNoAutorelease
1 parent 68f3629 commit abbb57b

File tree

4 files changed

+9
-6
lines changed

4 files changed

+9
-6
lines changed

src/main/java/org/truffleruby/cext/ValueWrapperManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public void addFinalizer(ValueWrapper wrapper, Pointer handle) {
117117
private Runnable createFinalizer(Pointer handle) {
118118
return () -> {
119119
this.removeFromHandleMap(handle.getAddress());
120-
handle.free();
120+
handle.freeNoAutorelease();
121121
};
122122

123123
}

src/main/java/org/truffleruby/core/support/IONodes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@ public static Pointer getBuffer(RubyContext context, long size) {
490490
if (buffer.getSize() >= size) {
491491
return buffer;
492492
} else {
493-
buffer.free();
493+
buffer.freeNoAutorelease();
494494
final Pointer newBuffer = Pointer.malloc(Math.max(size * 2, 1024));
495495
Layouts.THREAD.setIoBuffer(rubyThread, newBuffer);
496496
return newBuffer;

src/main/java/org/truffleruby/core/thread/ThreadManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ public void cleanup(DynamicObject thread, Thread javaThread) {
337337
final FiberManager fiberManager = Layouts.THREAD.getFiberManager(thread);
338338
fiberManager.shutdown(javaThread);
339339

340-
Layouts.THREAD.getIoBuffer(thread).free();
340+
Layouts.THREAD.getIoBuffer(thread).freeNoAutorelease();
341341

342342
unregisterThread(thread);
343343
Layouts.THREAD.setThread(thread, null);

src/main/java/org/truffleruby/extra/ffi/Pointer.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,14 +225,17 @@ public synchronized void free(FinalizationService finalizationService) {
225225
UNSAFE.freeMemory(address);
226226
}
227227

228-
public synchronized void free() {
229-
assert !autorelease;
228+
@TruffleBoundary
229+
public synchronized void freeNoAutorelease() {
230+
if (autorelease) {
231+
throw new UnsupportedOperationException("Calling freeNoAutorelease() on a autorelease Pointer");
232+
}
230233
UNSAFE.freeMemory(address);
231234
}
232235

233236
@Override
234237
public void close() {
235-
free();
238+
freeNoAutorelease();
236239
}
237240

238241
public long getAddress() {

0 commit comments

Comments
 (0)