Skip to content

Commit 5950406

Browse files
committed
[GR-15990] Remove some global references to the RubyContext
PullRequest: truffleruby/2411
2 parents 2edfaa6 + c9387f6 commit 5950406

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

src/main/java/org/truffleruby/RubyContext.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
import org.truffleruby.options.Options;
7979
import org.truffleruby.parser.TranslatorDriver;
8080
import org.truffleruby.platform.NativeConfiguration;
81+
import org.truffleruby.platform.Signals;
8182
import org.truffleruby.platform.TruffleNFIPlatform;
8283
import org.truffleruby.shared.Metrics;
8384
import org.truffleruby.shared.TruffleRuby;
@@ -518,6 +519,8 @@ private void dispose() {
518519
threadManager.cleanupMainThread();
519520
safepointManager.checkNoRunningThreads();
520521

522+
Signals.restoreDefaultHandlers();
523+
521524
if (options.ROPE_PRINT_INTERN_STATS) {
522525
RubyLanguage.LOGGER.info("ropes re-used: " + language.ropeCache.getRopesReusedCount());
523526
RubyLanguage.LOGGER.info("rope byte arrays re-used: " + language.ropeCache.getByteArrayReusedCount());

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,6 @@ UnblockingAction getNativeCallUnblockingAction() {
534534
}
535535

536536
public void initializeValuesForJavaThread(RubyThread rubyThread, Thread thread) {
537-
538537
if (Thread.currentThread() == thread) {
539538
currentThread.set(rubyThread);
540539
}
@@ -557,6 +556,10 @@ public void cleanupValuesForJavaThread(Thread thread) {
557556
}
558557
foreignThreadMap.remove(thread);
559558

559+
if (pthread_self != null) {
560+
blockingNativeCallUnblockingAction.remove();
561+
}
562+
560563
unblockingActions.remove(thread);
561564
}
562565

src/main/java/org/truffleruby/platform/Signals.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
*/
1010
package org.truffleruby.platform;
1111

12+
import java.util.ArrayList;
1213
import java.util.concurrent.ConcurrentHashMap;
1314
import java.util.concurrent.ConcurrentMap;
1415

@@ -33,7 +34,7 @@ public static void registerIgnoreHandler(String signalName) {
3334
}
3435

3536
public static boolean restoreDefaultHandler(String signalName) {
36-
final SignalHandler defaultHandler = Signals.DEFAULT_HANDLERS.get(signalName);
37+
final SignalHandler defaultHandler = DEFAULT_HANDLERS.get(signalName);
3738
if (defaultHandler == null) {
3839
// it is already the default signal
3940
return false;
@@ -49,4 +50,10 @@ public static void restoreSystemHandler(String signalName) {
4950
Signal.handle(signal, SignalHandler.SIG_DFL);
5051
}
5152

53+
public static void restoreDefaultHandlers() {
54+
for (String signalName : new ArrayList<>(DEFAULT_HANDLERS.keySet())) {
55+
restoreDefaultHandler(signalName);
56+
}
57+
}
58+
5259
}

0 commit comments

Comments
 (0)