@@ -246,22 +246,12 @@ private void resume(RubyFiber fromFiber, RubyFiber fiber, FiberOperation operati
246
246
@ TruffleBoundary
247
247
public Object [] transferControlTo (RubyFiber fromFiber , RubyFiber fiber , FiberOperation operation , Object [] args ) {
248
248
final TruffleContext truffleContext = context .getEnv ().getContext ();
249
-
250
- final FiberMessage message ;
251
249
final boolean isRubyManagedThread = context .getThreadManager ().isRubyManagedThread (Thread .currentThread ());
252
- if (isRubyManagedThread ) {
253
- context .getSafepointManager ().leaveThread ();
254
- }
255
- try {
256
- message = truffleContext .leaveAndEnter (null , () -> {
257
- resume (fromFiber , fiber , operation , args );
258
- return waitMessage (fromFiber );
259
- });
260
- } finally {
261
- if (isRubyManagedThread ) {
262
- context .getSafepointManager ().enterThread ();
263
- }
264
- }
250
+
251
+ final FiberMessage message = context .getThreadManager ().leaveAndEnter (truffleContext , null , () -> {
252
+ resume (fromFiber , fiber , operation , args );
253
+ return waitMessage (fromFiber );
254
+ }, isRubyManagedThread );
265
255
266
256
return handleMessage (fromFiber , message );
267
257
}
@@ -325,18 +315,10 @@ public void killOtherFibers() {
325
315
// This method might not be executed on the rootFiber Java Thread but possibly on another Java Thread.
326
316
327
317
final TruffleContext truffleContext = context .getEnv ().getContext ();
328
- assert truffleContext .isEntered ();
329
- assert context .getThreadManager ().isRubyManagedThread (Thread .currentThread ());
330
-
331
- context .getSafepointManager ().leaveThread ();
332
- try {
333
- truffleContext .leaveAndEnter (null , () -> {
334
- doKillOtherFibers ();
335
- return null ;
336
- });
337
- } finally {
338
- context .getSafepointManager ().enterThread ();
339
- }
318
+ context .getThreadManager ().leaveAndEnter (truffleContext , null , () -> {
319
+ doKillOtherFibers ();
320
+ return null ;
321
+ }, true );
340
322
}
341
323
342
324
private void doKillOtherFibers () {
0 commit comments