@@ -154,7 +154,7 @@ public boolean isLazyPythonClass(Object receiver) {
154154 * objects.
155155 */
156156 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 );
158158 }
159159
160160 /**
@@ -287,6 +287,7 @@ private static class DefaultNodes extends Node {
287287
288288 @ Child private IsSubtypeNode isSubtype ;
289289 @ Child private IsSameTypeNode isSameType ;
290+ @ Child private PRaiseNode raiseNode ;
290291 @ CompilationFinal byte state = 0 ;
291292
292293 protected IsSubtypeNode getIsSubtypeNode () {
@@ -306,6 +307,14 @@ protected IsSameTypeNode getIsSameTypeNode() {
306307 return isSameType ;
307308 }
308309
310+ protected PRaiseNode getRaiseNode () {
311+ if (raiseNode == null ) {
312+ CompilerDirectives .transferToInterpreterAndInvalidate ();
313+ raiseNode = insert (PRaiseNode .create ());
314+ }
315+ return raiseNode ;
316+ }
317+
309318 protected void enterReverseCompare () {
310319 if ((state & REVERSE_COMP ) == 0 ) {
311320 CompilerDirectives .transferToInterpreterAndInvalidate ();
@@ -343,6 +352,11 @@ protected IsSameTypeNode getIsSameTypeNode() {
343352 return IsSameTypeNodeGen .getUncached ();
344353 }
345354
355+ @ Override
356+ protected PRaiseNode getRaiseNode () {
357+ return PRaiseNode .getUncached ();
358+ }
359+
346360 @ Override
347361 protected void enterReverseCompare () {
348362 }
@@ -512,7 +526,7 @@ public boolean canBeIndex(Object receiver) {
512526 * object cannot be interpreted as an index.
513527 */
514528 public Object asIndexWithState (Object receiver , @ SuppressWarnings ("unused" ) ThreadState threadState ) {
515- throw PRaiseNode . getUncached ().raiseIntegerInterpretationError (receiver );
529+ throw getDefaultNodes (). getRaiseNode ().raiseIntegerInterpretationError (receiver );
516530 }
517531
518532 /**
@@ -539,7 +553,7 @@ public final Object asIndexWithFrame(Object receiver, VirtualFrame frame) {
539553 * method. All other types raise a TypeError.
540554 */
541555 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 );
543557 }
544558
545559 /**
@@ -571,7 +585,7 @@ public final Object asPString(Object receiver) {
571585 * of that method. Raise TypeError otherwise.
572586 */
573587 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 );
575589 }
576590
577591 /**
@@ -672,7 +686,7 @@ public final Object callObject(Object callable, VirtualFrame frame, Object... ar
672686 * Call a callable object.
673687 */
674688 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 );
676690 }
677691
678692 /**
@@ -697,7 +711,7 @@ public final Object callUnboundMethod(Object method, VirtualFrame frame, Object
697711 * @see #callUnboundMethod(Object, VirtualFrame, Object, Object...)
698712 */
699713 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 );
701715 }
702716
703717 /**
@@ -874,7 +888,7 @@ public int asSizeWithState(Object receiver, Object errorType, ThreadState thread
874888 } else if (errorType == null ) {
875889 return result < 0 ? Integer .MIN_VALUE : Integer .MAX_VALUE ;
876890 } else {
877- throw PRaiseNode . getUncached ().raiseNumberTooLarge (errorType , result );
891+ throw getDefaultNodes (). getRaiseNode ().raiseNumberTooLarge (errorType , result );
878892 }
879893 }
880894
@@ -964,7 +978,7 @@ public final boolean isTrue(Object receiver, VirtualFrame frame) {
964978 * that slot.
965979 */
966980 public int lengthWithState (Object receiver , ThreadState state ) {
967- throw PRaiseNode . getUncached ().raiseHasNoLength (receiver );
981+ throw getDefaultNodes (). getRaiseNode ().raiseHasNoLength (receiver );
968982 }
969983
970984 /**
@@ -1096,7 +1110,7 @@ public boolean typeCheck(Object receiver, Object type) {
10961110 * Implements the logic from {@code PyObject_GetIter}.
10971111 */
10981112 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 );
11001114 }
11011115
11021116 /**
0 commit comments