Skip to content

Commit d91b8fe

Browse files
committed
Add PRaiseNode to POL
1 parent e89c49e commit d91b8fe

File tree

1 file changed

+23
-9
lines changed

1 file changed

+23
-9
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/object/PythonObjectLibrary.java

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)