90
90
import com .oracle .truffle .api .profiles .ConditionProfile ;
91
91
92
92
import sun .misc .Signal ;
93
+ import sun .misc .SignalHandler ;
93
94
94
95
@ CoreModule (value = "VMPrimitives" , isClass = true )
95
96
public abstract class VMPrimitiveNodes {
@@ -229,34 +230,34 @@ public static abstract class VMWatchSignalNode extends PrimitiveArrayArgumentsNo
229
230
230
231
@ TruffleBoundary
231
232
@ Specialization
232
- protected boolean restoreDefault (RubyString signalName , RubyString action ) {
233
+ protected boolean restoreDefault (RubyString signalString , RubyString action ) {
233
234
final String actionString = StringOperations .getString (action );
234
- final String signal = StringOperations .getString (signalName );
235
+ final String signalName = StringOperations .getString (signalString );
235
236
236
237
switch (actionString ) {
237
238
case "DEFAULT" :
238
- return restoreDefaultHandler (signal );
239
+ return restoreDefaultHandler (signalName );
239
240
case "SYSTEM_DEFAULT" :
240
- return restoreSystemHandler (signal );
241
+ return restoreSystemHandler (signalName );
241
242
case "IGNORE" :
242
- return registerIgnoreHandler (signal );
243
+ return registerIgnoreHandler (signalName );
243
244
default :
244
245
throw new UnsupportedOperationException (actionString );
245
246
}
246
247
}
247
248
248
249
@ TruffleBoundary
249
250
@ Specialization
250
- protected boolean watchSignalProc (RubyString signalName , RubyProc action ) {
251
+ protected boolean watchSignalProc (RubyString signalString , RubyProc action ) {
251
252
if (getContext ().getThreadManager ().getCurrentThread () != getContext ().getThreadManager ().getRootThread ()) {
252
253
// The proc will be executed on the main thread
253
254
SharedObjects .writeBarrier (getContext (), action );
254
255
}
255
256
256
257
final RubyContext context = getContext ();
257
258
258
- final String signal = StringOperations .getString (signalName );
259
- return registerHandler (signal , () -> {
259
+ String signalName = StringOperations .getString (signalString );
260
+ return registerHandler (signalName , signal -> {
260
261
if (context .getOptions ().SINGLE_THREADED ) {
261
262
RubyLanguage .LOGGER .severe (
262
263
"signal " + signal + " caught but can't create a thread to handle it so ignoring" );
@@ -279,9 +280,9 @@ protected boolean watchSignalProc(RubyString signalName, RubyProc action) {
279
280
printStream .println (
280
281
"[ruby] SEVERE: signal " + signal +
281
282
" caught but can't attach a thread to handle it so restoring the default handler and re-raising the signal" );
282
- Signals .restoreDefaultHandler (signal );
283
+ Signals .restoreDefaultHandler (signalName );
283
284
try {
284
- Signal .raise (new Signal ( signal ) );
285
+ Signal .raise (signal );
285
286
} catch (IllegalArgumentException illegalArgumentException ) {
286
287
illegalArgumentException .printStackTrace (printStream );
287
288
}
@@ -351,7 +352,7 @@ private boolean registerIgnoreHandler(String signalName) {
351
352
}
352
353
353
354
@ TruffleBoundary
354
- private boolean registerHandler (String signalName , Runnable newHandler ) {
355
+ private boolean registerHandler (String signalName , SignalHandler newHandler ) {
355
356
if (getContext ().getOptions ().EMBEDDED ) {
356
357
RubyLanguage .LOGGER .warning (
357
358
"trapping signal " + signalName +
0 commit comments