@@ -260,14 +260,9 @@ Object run(Object o) {
260
260
@ GenerateNodeFactory
261
261
abstract static class TRegexCallSafe extends PythonBuiltinNode {
262
262
263
- private Node invokeNode ;
264
-
265
263
private Object doIt (TruffleObject callable , String arg1 , Object arg2 ,
266
- @ Cached ("create()" ) BranchProfile runtimeError ,
267
- @ Cached ("create()" ) BranchProfile typeError ) {
268
- if (invokeNode == null ) {
269
- invokeNode = Message .createExecute (0 ).createNode ();
270
- }
264
+ BranchProfile runtimeError ,
265
+ BranchProfile typeError , Node invokeNode ) {
271
266
try {
272
267
return ForeignAccess .sendExecute (invokeNode , callable , new Object []{arg1 , arg2 });
273
268
} catch (ArityException | UnsupportedTypeException | UnsupportedMessageException e ) {
@@ -282,16 +277,21 @@ private Object doIt(TruffleObject callable, String arg1, Object arg2,
282
277
@ Specialization (guards = "isForeignObject(callable)" )
283
278
Object call (TruffleObject callable , String arg1 , String arg2 ,
284
279
@ Cached ("create()" ) BranchProfile runtimeError ,
285
- @ Cached ("create()" ) BranchProfile typeError ) {
286
- return doIt (callable , arg1 , arg2 , runtimeError , typeError );
280
+ @ Cached ("create()" ) BranchProfile typeError ,
281
+ @ Cached ("createExecute()" ) Node invokeNode ) {
282
+ return doIt (callable , arg1 , arg2 , runtimeError , typeError , invokeNode );
287
283
}
288
284
289
285
@ Specialization (guards = "isForeignObject(callable)" )
290
286
Object call (TruffleObject callable , String arg1 , int arg2 ,
291
287
@ Cached ("create()" ) BranchProfile runtimeError ,
292
- @ Cached ("create()" ) BranchProfile typeError ) {
293
- return doIt (callable , arg1 , arg2 , runtimeError , typeError );
288
+ @ Cached ("create()" ) BranchProfile typeError ,
289
+ @ Cached ("createExecute()" ) Node invokeNode ) {
290
+ return doIt (callable , arg1 , arg2 , runtimeError , typeError , invokeNode );
291
+ }
292
+
293
+ protected static Node createExecute () {
294
+ return Message .createExecute (0 ).createNode ();
294
295
}
295
-
296
296
}
297
297
}
0 commit comments