Skip to content

Commit 4198b30

Browse files
committed
Add PyList_Reverse
1 parent 5f2a539 commit 4198b30

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

graalpython/com.oracle.graal.python.cext/src/listobject.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,8 @@ UPCALL_ID(PyList_Insert);
106106
int PyList_Insert(PyObject *op, Py_ssize_t where, PyObject *newitem) {
107107
return UPCALL_CEXT_I(_jls_PyList_Insert, native_to_java(op), where, native_to_java(newitem));
108108
}
109+
110+
UPCALL_ID(PyList_Reverse);
111+
PyAPI_FUNC(int) PyList_Reverse(PyObject *self) {
112+
return UPCALL_CEXT_I(_jls_PyList_Reverse, native_to_java(self));
113+
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/PythonCextBuiltins.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,15 @@
4747
import static com.oracle.graal.python.builtins.objects.cext.common.CExtContext.isClassOrStaticMethod;
4848
import static com.oracle.graal.python.nodes.ErrorMessages.BAD_ARG_TO_INTERNAL_FUNC_WAS_S_P;
4949
import static com.oracle.graal.python.nodes.ErrorMessages.HASH_MISMATCH;
50+
import static com.oracle.graal.python.nodes.ErrorMessages.NATIVE_S_SUBTYPES_NOT_IMPLEMENTED;
5051
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__DOC__;
5152
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__MODULE__;
5253
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__NAME__;
5354
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__PACKAGE__;
5455
import static com.oracle.graal.python.nodes.SpecialMethodNames.ITEMS;
5556
import static com.oracle.graal.python.nodes.SpecialMethodNames.KEYS;
56-
import static com.oracle.graal.python.nodes.SpecialMethodNames.__NEW__;
5757
import static com.oracle.graal.python.nodes.SpecialMethodNames.VALUES;
58+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__NEW__;
5859
import static com.oracle.graal.python.runtime.exception.PythonErrorType.OverflowError;
5960
import static com.oracle.graal.python.util.PythonUtils.EMPTY_BYTE_ARRAY;
6061
import static com.oracle.graal.python.util.PythonUtils.EMPTY_OBJECT_ARRAY;
@@ -213,6 +214,7 @@
213214
import com.oracle.graal.python.builtins.objects.getsetdescriptor.GetSetDescriptor;
214215
import com.oracle.graal.python.builtins.objects.ints.PInt;
215216
import com.oracle.graal.python.builtins.objects.iterator.PSequenceIterator;
217+
import com.oracle.graal.python.builtins.objects.list.ListBuiltins;
216218
import com.oracle.graal.python.builtins.objects.list.PList;
217219
import com.oracle.graal.python.builtins.objects.memoryview.BufferLifecycleManager;
218220
import com.oracle.graal.python.builtins.objects.memoryview.MemoryViewNodes;
@@ -253,7 +255,6 @@
253255
import com.oracle.graal.python.lib.PySequenceCheckNode;
254256
import com.oracle.graal.python.nodes.BuiltinNames;
255257
import com.oracle.graal.python.nodes.ErrorMessages;
256-
import static com.oracle.graal.python.nodes.ErrorMessages.NATIVE_S_SUBTYPES_NOT_IMPLEMENTED;
257258
import com.oracle.graal.python.nodes.PGuards;
258259
import com.oracle.graal.python.nodes.PNodeWithContext;
259260
import com.oracle.graal.python.nodes.PRaiseNode;
@@ -4157,6 +4158,23 @@ protected static SequenceStorageNodes.SetItemNode createSetItem() {
41574158
}
41584159
}
41594160

4161+
@Builtin(name = "PyList_Reverse", minNumOfPositionalArgs = 1)
4162+
@GenerateNodeFactory
4163+
abstract static class PyListReverse extends PythonUnaryBuiltinNode {
4164+
@Specialization
4165+
int reverse(VirtualFrame frame, PList self,
4166+
@Cached ListBuiltins.ListReverseNode reverseNode,
4167+
@Cached TransformExceptionToNativeNode transformExceptionToNativeNode) {
4168+
try {
4169+
reverseNode.execute(frame, self);
4170+
return 0;
4171+
} catch (PException e) {
4172+
transformExceptionToNativeNode.execute(frame, e);
4173+
return -1;
4174+
}
4175+
}
4176+
}
4177+
41604178
@Builtin(name = "PySequence_GetItem", minNumOfPositionalArgs = 3, declaresExplicitSelf = true)
41614179
@GenerateNodeFactory
41624180
abstract static class PySequenceGetItem extends PythonTernaryBuiltinNode {

0 commit comments

Comments
 (0)