@@ -92,15 +92,6 @@ public static Object execute(Object receiver, Object[] args, InteropLibrary rece
92
92
}
93
93
}
94
94
95
- public static Object invoke (InteropLibrary receivers , Object receiver , String member , Object [] args ,
96
- TranslateInteropExceptionNode translateInteropExceptionNode ) {
97
- try {
98
- return receivers .invokeMember (receiver , member , args );
99
- } catch (InteropException e ) {
100
- throw translateInteropExceptionNode .executeInInvokeMember (e , receiver , args );
101
- }
102
- }
103
-
104
95
public static Object readMember (InteropLibrary interop , Object receiver , String name ,
105
96
TranslateInteropExceptionNode translateInteropException ) {
106
97
try {
@@ -1468,41 +1459,15 @@ protected Nil remove(Object receiver, Object identifier,
1468
1459
}
1469
1460
}
1470
1461
1471
- @ GenerateUncached
1472
1462
@ GenerateNodeFactory
1473
1463
@ CoreMethod (names = "invoke_member" , onSingleton = true , required = 2 , rest = true )
1474
- @ NodeChild (value = "argumentNodes" , type = RubyNode [].class )
1475
- public abstract static class InvokeMemberNode extends RubySourceNode {
1476
-
1477
- @ NeverDefault
1478
- public static InvokeMemberNode create () {
1479
- return InteropNodesFactory .InvokeMemberNodeFactory .create (null );
1480
- }
1481
-
1482
- public static InvokeMemberNode create (RubyNode [] argumentNodes ) {
1483
- return InteropNodesFactory .InvokeMemberNodeFactory .create (argumentNodes );
1484
- }
1485
-
1486
- public abstract Object execute (Object receiver , Object identifier , Object [] args );
1487
-
1488
- abstract RubyNode [] getArgumentNodes ();
1464
+ public abstract static class InteropInvokeMemberNode extends CoreMethodArrayArgumentsNode {
1489
1465
1490
- @ Specialization (limit = "getInteropCacheLimit()" )
1491
- protected Object invokeCached (Object receiver , Object identifier , Object [] args ,
1492
- @ Cached ToJavaStringNode toJavaStringNode ,
1493
- @ CachedLibrary ("receiver" ) InteropLibrary receivers ,
1494
- @ Cached ForeignToRubyNode foreignToRubyNode ,
1495
- @ Cached TranslateInteropExceptionNode translateInteropException ) {
1496
- final String name = toJavaStringNode .executeToJavaString (identifier );
1497
- final Object foreign = invoke (receivers , receiver , name , args , translateInteropException );
1498
- return foreignToRubyNode .executeConvert (foreign );
1499
- }
1500
-
1501
- @ Override
1502
- public RubyNode cloneUninitialized () {
1503
- return create (cloneUninitialized (getArgumentNodes ())).copyFlags (this );
1466
+ @ Specialization
1467
+ protected Object invokeMember (Object receiver , Object identifier , Object [] args ,
1468
+ @ Cached InvokeMemberNode invokeMemberNode ) {
1469
+ return invokeMemberNode .execute (receiver , identifier , args );
1504
1470
}
1505
-
1506
1471
}
1507
1472
1508
1473
@ CoreMethod (names = "member_readable?" , onSingleton = true , required = 2 )
0 commit comments