Skip to content

Commit 4741dde

Browse files
committed
re-introduce stack2tuple (for now)
1 parent 6c17415 commit 4741dde

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

graalpython/com.oracle.graal.python.cext/include/Python.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,8 @@ extern int _PyArg_ParseTupleAndKeywords_SizeT(PyObject *argv, PyObject *kwds, co
159159
#define _PyArg_Parse_SizeT(ARGV, FORMAT, ...) PyArg_ParseTupleAndKeywords(ARGV, PyDict_New(), FORMAT, NULL, __VA_ARGS__)
160160
#define _PyArg_ParseTuple_SizeT(ARGV, FORMAT, ...) PyArg_ParseTupleAndKeywords(ARGV, PyDict_New(), FORMAT, NULL, __VA_ARGS__)
161161
#define _PyArg_ParseTupleAndKeywordsFast_SizeT(ARGS, KWARGS, PARSER, ...) PyArg_ParseTupleAndKeywords(ARGS, KWARGS, (PARSER)->format, (PARSER)->keywords, __VA_ARGS__)
162-
#define _PyArg_ParseStack_SizeT(ARGS, NARGS, KWNAMES, PARSER, ...) PyArg_ParseTupleAndKeywords((PyObject*)ARGS, PyDict_New(), (PARSER)->format, (char**)KWNAMES, __VA_ARGS__)
162+
extern PyObject* PyTruffle_Stack2Tuple(PyObject** args, Py_ssize_t nargs);
163+
#define _PyArg_ParseStack_SizeT(ARGS, NARGS, KWNAMES, PARSER, ...) PyArg_ParseTupleAndKeywords(PyTruffle_Stack2Tuple(ARGS, NARGS), KWNAMES, (PARSER)->format, (PARSER)->keywords, __VA_ARGS__)
163164

164165
#ifndef PyArg_Parse
165166
#define PyArg_Parse _PyArg_Parse_SizeT

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,15 @@ PyObject* PyTruffle_GetArg(positional_argstack* p, PyObject* kwds, char** kwdnam
8484
break; \
8585
}
8686

87+
MUST_INLINE PyObject* PyTruffle_Stack2Tuple(PyObject** args, Py_ssize_t nargs) {
88+
PyObject* argv = PyTuple_New(nargs);
89+
Py_ssize_t i;
90+
for (i=0; i < nargs; i++) {
91+
PyTuple_SetItem(argv, i, args[i]);
92+
}
93+
return argv;
94+
}
95+
8796
/* argparse */
8897
UPCALL_ID(__bool__);
8998
int _PyArg_ParseTupleAndKeywords_SizeT(PyObject *argv, PyObject *kwds, const char *format, char** kwdnames, ...) {

0 commit comments

Comments
 (0)