Skip to content

Commit 589b3d6

Browse files
committed
Make retryWhileInterrupted() an instance method to check the context is not entered
1 parent ce10680 commit 589b3d6

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

src/main/java/org/truffleruby/core/fiber/FiberManager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public static void waitForInitialization(RubyContext context, RubyFiber fiber, N
128128
if (context.getEnv().getContext().isEntered()) {
129129
context.getThreadManager().runUntilResultKeepStatus(currentNode, blockingAction);
130130
} else {
131-
ThreadManager.retryWhileInterrupted(blockingAction);
131+
context.getThreadManager().retryWhileInterrupted(blockingAction);
132132
}
133133

134134
final Throwable uncaughtException = fiber.uncaughtException;
@@ -230,7 +230,7 @@ private void addToMessageQueue(RubyFiber fiber, FiberMessage message) {
230230
@TruffleBoundary
231231
private FiberMessage waitMessage(RubyFiber fiber) {
232232
assert !context.getEnv().getContext().isEntered() : "should have left context while waiting fiber message";
233-
return ThreadManager.retryWhileInterrupted(fiber.messageQueue::take);
233+
return context.getThreadManager().retryWhileInterrupted(fiber.messageQueue::take);
234234
}
235235

236236
@TruffleBoundary
@@ -330,7 +330,7 @@ public void killOtherFibers() {
330330
final TruffleContext truffleContext = context.getEnv().getContext();
331331
context.getThreadManager().leaveAndEnter(truffleContext, null, () -> {
332332
doKillOtherFibers();
333-
return null;
333+
return BlockingAction.SUCCESS;
334334
}, true);
335335
}
336336

@@ -341,7 +341,7 @@ private void doKillOtherFibers() {
341341

342342
// Wait for the Fiber to finish so we only run one Fiber at a time
343343
final CountDownLatch finishedLatch = fiber.finishedLatch;
344-
ThreadManager.retryWhileInterrupted(() -> {
344+
context.getThreadManager().retryWhileInterrupted(() -> {
345345
finishedLatch.await();
346346
return BlockingAction.SUCCESS;
347347
});

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -476,9 +476,10 @@ public <T> T leaveAndEnter(TruffleContext truffleContext, Node currentNode, Supp
476476
}
477477
}
478478

479-
/** Only use when no context is available. */
479+
/** Only use when the context is not entered. */
480480
@TruffleBoundary
481-
public static <T> T retryWhileInterrupted(BlockingAction<T> action) {
481+
public <T> T retryWhileInterrupted(BlockingAction<T> action) {
482+
assert !context.getEnv().getContext().isEntered() : "Use runUntilResult*() when entered";
482483
boolean interrupted = false;
483484
try {
484485
while (true) {

0 commit comments

Comments
 (0)