13
13
import java .util .concurrent .ConcurrentHashMap ;
14
14
import java .util .concurrent .ConcurrentMap ;
15
15
16
+ import org .truffleruby .RubyContext ;
16
17
import sun .misc .Signal ;
17
18
import sun .misc .SignalHandler ;
18
19
@@ -26,15 +27,14 @@ public class Signals {
26
27
// Use String and not Signal as key to work around SVM not allowing new Signal("PROF")
27
28
/** Default SignalHandlers for the JVM */
28
29
private static final ConcurrentMap <String , SignalHandler > DEFAULT_HANDLERS = new ConcurrentHashMap <>();
29
- /** Default signal handlers for Ruby, only SIGINT and SIGALRM, see {@code core/main.rb} */
30
- private static final ConcurrentMap <String , SignalHandler > RUBY_DEFAULT_HANDLERS = new ConcurrentHashMap <>();
31
30
32
- public static void registerHandler (SignalHandler newHandler , String signalName , boolean isRubyDefaultHandler ) {
31
+ public static void registerHandler (RubyContext context , SignalHandler newHandler , String signalName ,
32
+ boolean isRubyDefaultHandler ) {
33
33
final Signal signal = new Signal (signalName );
34
34
final SignalHandler oldHandler = Signal .handle (signal , newHandler );
35
35
DEFAULT_HANDLERS .putIfAbsent (signalName , oldHandler );
36
36
if (isRubyDefaultHandler ) {
37
- RUBY_DEFAULT_HANDLERS .putIfAbsent (signalName , newHandler );
37
+ context . defaultRubySignalHandlers .putIfAbsent (signalName , newHandler );
38
38
}
39
39
}
40
40
@@ -56,8 +56,8 @@ public static boolean restoreDefaultHandler(String signalName) {
56
56
}
57
57
}
58
58
59
- public static boolean restoreRubyDefaultHandler (String signalName ) {
60
- SignalHandler defaultHandler = RUBY_DEFAULT_HANDLERS .get (signalName );
59
+ public static boolean restoreRubyDefaultHandler (RubyContext context , String signalName ) {
60
+ SignalHandler defaultHandler = context . defaultRubySignalHandlers .get (signalName );
61
61
if (defaultHandler == null ) {
62
62
defaultHandler = DEFAULT_HANDLERS .get (signalName );
63
63
}
0 commit comments