@@ -228,7 +228,7 @@ public static abstract class VMWatchSignalNode extends PrimitiveArrayArgumentsNo
228
228
229
229
@ TruffleBoundary
230
230
@ Specialization (guards = { "libSignalString.isRubyString(signalString)" , "libAction.isRubyString(action)" })
231
- protected boolean restoreDefault (Object signalString , Object action ,
231
+ protected boolean watchSignalString (Object signalString , boolean isRubyDefaultHandler , Object action ,
232
232
@ CachedLibrary (limit = "2" ) RubyStringLibrary libSignalString ,
233
233
@ CachedLibrary (limit = "2" ) RubyStringLibrary libAction ) {
234
234
final String actionString = libAction .getJavaString (action );
@@ -248,7 +248,7 @@ protected boolean restoreDefault(Object signalString, Object action,
248
248
249
249
@ TruffleBoundary
250
250
@ Specialization (guards = "libSignalString.isRubyString(signalString)" )
251
- protected boolean watchSignalProc (Object signalString , RubyProc action ,
251
+ protected boolean watchSignalProc (Object signalString , boolean isRubyDefaultHandler , RubyProc action ,
252
252
@ CachedLibrary (limit = "2" ) RubyStringLibrary libSignalString ) {
253
253
final RubyContext context = getContext ();
254
254
@@ -265,7 +265,7 @@ protected boolean watchSignalProc(Object signalString, RubyProc action,
265
265
"Handling of signal " + signal ,
266
266
SafepointPredicate .currentFiberOfThread (context , rootThread ),
267
267
(rubyThread , currentNode ) -> ProcOperations .rootCall (action , signal .getNumber ()));
268
- });
268
+ }, isRubyDefaultHandler );
269
269
}
270
270
271
271
@ TruffleBoundary
@@ -277,7 +277,7 @@ private boolean restoreDefaultHandler(String signalName) {
277
277
}
278
278
279
279
try {
280
- return Signals .restoreDefaultHandler (signalName );
280
+ return Signals .restoreRubyDefaultHandler (signalName );
281
281
} catch (IllegalArgumentException e ) {
282
282
throw new RaiseException (getContext (), coreExceptions ().argumentError (e .getMessage (), this ));
283
283
}
@@ -316,15 +316,15 @@ private boolean registerIgnoreHandler(String signalName) {
316
316
}
317
317
318
318
@ TruffleBoundary
319
- private boolean registerHandler (String signalName , SignalHandler newHandler ) {
319
+ private boolean registerHandler (String signalName , SignalHandler newHandler , boolean isRubyDefaultHandler ) {
320
320
if (getContext ().getOptions ().EMBEDDED ) {
321
321
RubyLanguage .LOGGER .warning (
322
322
"trapping signal " + signalName +
323
323
" in embedded mode may interfere with other embedded contexts or the host system" );
324
324
}
325
325
326
326
try {
327
- Signals .registerHandler (newHandler , signalName );
327
+ Signals .registerHandler (newHandler , signalName , isRubyDefaultHandler );
328
328
} catch (IllegalArgumentException e ) {
329
329
throw new RaiseException (getContext (), coreExceptions ().argumentError (e .getMessage (), this ));
330
330
}
0 commit comments