@@ -154,7 +154,7 @@ public boolean isLazyPythonClass(Object receiver) {
154
154
* objects.
155
155
*/
156
156
public void setLazyPythonClass (Object receiver , Object cls ) {
157
- PRaiseNode . getUncached ().raise (PythonBuiltinClassType .TypeError , ErrorMessages .CLASS_ASSIGMENT_ONLY_SUPPORTED_FOR_HEAP_TYPES_OR_MODTYPE_SUBCLASSES_NOT_P , receiver );
157
+ throw getDefaultNodes (). getRaiseNode ().raise (PythonBuiltinClassType .TypeError , ErrorMessages .CLASS_ASSIGMENT_ONLY_SUPPORTED_FOR_HEAP_TYPES_OR_MODTYPE_SUBCLASSES_NOT_P , receiver );
158
158
}
159
159
160
160
/**
@@ -287,6 +287,7 @@ private static class DefaultNodes extends Node {
287
287
288
288
@ Child private IsSubtypeNode isSubtype ;
289
289
@ Child private IsSameTypeNode isSameType ;
290
+ @ Child private PRaiseNode raiseNode ;
290
291
@ CompilationFinal byte state = 0 ;
291
292
292
293
protected IsSubtypeNode getIsSubtypeNode () {
@@ -306,6 +307,14 @@ protected IsSameTypeNode getIsSameTypeNode() {
306
307
return isSameType ;
307
308
}
308
309
310
+ protected PRaiseNode getRaiseNode () {
311
+ if (raiseNode == null ) {
312
+ CompilerDirectives .transferToInterpreterAndInvalidate ();
313
+ raiseNode = insert (PRaiseNode .create ());
314
+ }
315
+ return raiseNode ;
316
+ }
317
+
309
318
protected void enterReverseCompare () {
310
319
if ((state & REVERSE_COMP ) == 0 ) {
311
320
CompilerDirectives .transferToInterpreterAndInvalidate ();
@@ -343,6 +352,11 @@ protected IsSameTypeNode getIsSameTypeNode() {
343
352
return IsSameTypeNodeGen .getUncached ();
344
353
}
345
354
355
+ @ Override
356
+ protected PRaiseNode getRaiseNode () {
357
+ return PRaiseNode .getUncached ();
358
+ }
359
+
346
360
@ Override
347
361
protected void enterReverseCompare () {
348
362
}
@@ -512,7 +526,7 @@ public boolean canBeIndex(Object receiver) {
512
526
* object cannot be interpreted as an index.
513
527
*/
514
528
public Object asIndexWithState (Object receiver , @ SuppressWarnings ("unused" ) ThreadState threadState ) {
515
- throw PRaiseNode . getUncached ().raiseIntegerInterpretationError (receiver );
529
+ throw getDefaultNodes (). getRaiseNode ().raiseIntegerInterpretationError (receiver );
516
530
}
517
531
518
532
/**
@@ -539,7 +553,7 @@ public final Object asIndexWithFrame(Object receiver, VirtualFrame frame) {
539
553
* method. All other types raise a TypeError.
540
554
*/
541
555
public String asPathWithState (Object receiver , @ SuppressWarnings ("unused" ) ThreadState threadState ) {
542
- throw PRaiseNode . getUncached ().raise (PythonBuiltinClassType .TypeError , ErrorMessages .EXPECTED_STR_BYTE_OSPATHLIKE_OBJ , receiver );
556
+ throw getDefaultNodes (). getRaiseNode ().raise (PythonBuiltinClassType .TypeError , ErrorMessages .EXPECTED_STR_BYTE_OSPATHLIKE_OBJ , receiver );
543
557
}
544
558
545
559
/**
@@ -571,7 +585,7 @@ public final Object asPString(Object receiver) {
571
585
* of that method. Raise TypeError otherwise.
572
586
*/
573
587
public int asFileDescriptorWithState (Object receiver , @ SuppressWarnings ("unused" ) ThreadState threadState ) {
574
- throw PRaiseNode . getUncached ().raise (PythonBuiltinClassType .TypeError , ErrorMessages .ARG_MUST_BE_INT_OR_HAVE_FILENO_METHOD );
588
+ throw getDefaultNodes (). getRaiseNode ().raise (PythonBuiltinClassType .TypeError , ErrorMessages .ARG_MUST_BE_INT_OR_HAVE_FILENO_METHOD );
575
589
}
576
590
577
591
/**
@@ -672,7 +686,7 @@ public final Object callObject(Object callable, VirtualFrame frame, Object... ar
672
686
* Call a callable object.
673
687
*/
674
688
public Object callObjectWithState (Object callable , ThreadState state , Object ... arguments ) {
675
- throw PRaiseNode . getUncached ().raise (TypeError , ErrorMessages .OBJ_ISNT_CALLABLE , callable );
689
+ throw getDefaultNodes (). getRaiseNode ().raise (TypeError , ErrorMessages .OBJ_ISNT_CALLABLE , callable );
676
690
}
677
691
678
692
/**
@@ -697,7 +711,7 @@ public final Object callUnboundMethod(Object method, VirtualFrame frame, Object
697
711
* @see #callUnboundMethod(Object, VirtualFrame, Object, Object...)
698
712
*/
699
713
public Object callUnboundMethodWithState (Object method , ThreadState state , Object receiver , Object ... arguments ) {
700
- throw PRaiseNode . getUncached ().raise (TypeError , ErrorMessages .OBJ_ISNT_CALLABLE , method );
714
+ throw getDefaultNodes (). getRaiseNode ().raise (TypeError , ErrorMessages .OBJ_ISNT_CALLABLE , method );
701
715
}
702
716
703
717
/**
@@ -874,7 +888,7 @@ public int asSizeWithState(Object receiver, Object errorType, ThreadState thread
874
888
} else if (errorType == null ) {
875
889
return result < 0 ? Integer .MIN_VALUE : Integer .MAX_VALUE ;
876
890
} else {
877
- throw PRaiseNode . getUncached ().raiseNumberTooLarge (errorType , result );
891
+ throw getDefaultNodes (). getRaiseNode ().raiseNumberTooLarge (errorType , result );
878
892
}
879
893
}
880
894
@@ -964,7 +978,7 @@ public final boolean isTrue(Object receiver, VirtualFrame frame) {
964
978
* that slot.
965
979
*/
966
980
public int lengthWithState (Object receiver , ThreadState state ) {
967
- throw PRaiseNode . getUncached ().raiseHasNoLength (receiver );
981
+ throw getDefaultNodes (). getRaiseNode ().raiseHasNoLength (receiver );
968
982
}
969
983
970
984
/**
@@ -1096,7 +1110,7 @@ public boolean typeCheck(Object receiver, Object type) {
1096
1110
* Implements the logic from {@code PyObject_GetIter}.
1097
1111
*/
1098
1112
public Object getIteratorWithState (Object receiver , ThreadState state ) {
1099
- throw PRaiseNode . getUncached ().raise (PythonBuiltinClassType .TypeError , ErrorMessages .OBJ_NOT_ITERABLE , receiver );
1113
+ throw getDefaultNodes (). getRaiseNode ().raise (PythonBuiltinClassType .TypeError , ErrorMessages .OBJ_NOT_ITERABLE , receiver );
1100
1114
}
1101
1115
1102
1116
/**
0 commit comments