@@ -348,14 +348,7 @@ private int pendingInterruptCheckMask(ThreadContext context, IRubyObject err) {
348348 IRubyObject sym ;
349349
350350 if (!(sym = mask .op_aref (context , klass )).isNil ()) {
351- String symStr = sym .toString ();
352- switch (symStr ) {
353- case "immediate" : return INTERRUPT_IMMEDIATE ;
354- case "on_blocking" : return INTERRUPT_ON_BLOCKING ;
355- case "never" : return INTERRUPT_NEVER ;
356- default :
357- throw context .runtime .newThreadError ("unknown mask signature" );
358- }
351+ return checkInterruptMask (context , sym );
359352 }
360353 }
361354 }
@@ -772,21 +765,24 @@ public static IRubyObject handle_interrupt(ThreadContext context, IRubyObject se
772765 }
773766 }
774767
775- private static final RubyHash .VisitorWithState HandleInterruptVisitor = new RubyHash .VisitorWithState () {
768+ private static final RubyHash .VisitorWithState HandleInterruptVisitor = new RubyHash .VisitorWithState < Void > () {
776769 @ Override
777- public void visit (ThreadContext context , RubyHash self , IRubyObject key , IRubyObject value , int index , Object state ) {
778- if (value instanceof RubySymbol ) {
779- RubySymbol sym = (RubySymbol ) value ;
780- switch (sym .idString ()) {
781- case "immediate" : return ;
782- case "on_blocking" : return ;
783- case "never" : return ;
784- default : throw key .getRuntime ().newArgumentError ("unknown mask signature" );
785- }
786- }
770+ public void visit (ThreadContext context , RubyHash self , IRubyObject key , IRubyObject value , int index , Void state ) {
771+ checkInterruptMask (context , value );
787772 }
788773 };
789774
775+ private static int checkInterruptMask (final ThreadContext context , final IRubyObject sym ) {
776+ if (sym instanceof RubySymbol ) {
777+ switch (((RubySymbol ) sym ).idString ()) {
778+ case "immediate" : return INTERRUPT_IMMEDIATE ;
779+ case "on_blocking" : return INTERRUPT_ON_BLOCKING ;
780+ case "never" : return INTERRUPT_NEVER ;
781+ }
782+ }
783+ throw context .runtime .newArgumentError ("unknown mask signature" );
784+ }
785+
790786 @ JRubyMethod (name = "pending_interrupt?" , meta = true , optional = 1 )
791787 public static IRubyObject pending_interrupt_p (ThreadContext context , IRubyObject self , IRubyObject [] args ) {
792788 return context .getThread ().pending_interrupt_p (context , args );
0 commit comments