Skip to content

Commit f0546c1

Browse files
committed
code object: fix native api missing arg conversion
- fix native unittest
1 parent 304b574 commit f0546c1

File tree

5 files changed

+72
-47
lines changed

5 files changed

+72
-47
lines changed

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,16 @@
4242

4343
PyTypeObject PyCode_Type = PY_TRUFFLE_TYPE("code", &PyType_Type, Py_TPFLAGS_DEFAULT, sizeof(PyTypeObject));
4444

45-
PyCodeObject* PyCode_New(int argcount, int kwonlyargcount, int nlocals,
46-
int stacksize, int flags, PyObject *code,
47-
PyObject *consts, PyObject *names, PyObject *varnames,
48-
PyObject *freevars, PyObject *cellvars,
45+
PyCodeObject* PyCode_New(int argcount, int kwonlyargcount,
46+
int nlocals, int stacksize, int flags,
47+
PyObject *code, PyObject *consts, PyObject *names,
48+
PyObject *varnames, PyObject *freevars, PyObject *cellvars,
4949
PyObject *filename, PyObject *name, int firstlineno,
5050
PyObject *lnotab) {
51-
return UPCALL_CEXT_O("PyCode_New", argcount, kwonlyargcount, nlocals,
52-
stacksize, flags, native_to_java(code),
53-
native_to_java(consts), native_to_java(names), native_to_java(varnames),
51+
return UPCALL_CEXT_O("PyCode_New", argcount, kwonlyargcount,
52+
nlocals, stacksize, flags,
53+
native_to_java(code), native_to_java(consts), native_to_java(names),
54+
native_to_java(varnames), native_to_java(freevars), native_to_java(cellvars),
5455
native_to_java(filename), native_to_java(name), firstlineno,
5556
native_to_java(lnotab));
5657
}

graalpython/com.oracle.graal.python.test/src/tests/cpyext/test_codeobject.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,12 @@
3737
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3838
# SOFTWARE.
3939

40-
import sys
4140
import types
42-
from . import CPyExtTestCase, CPyExtFunction, CPyExtFunctionOutVars, unhandled_error_compare, GRAALPYTHON
41+
42+
import sys
43+
44+
from . import CPyExtTestCase, CPyExtFunction
45+
4346
__dir__ = __file__.rpartition("/")[0]
4447

4548

@@ -63,19 +66,23 @@ def compile_module(self, name):
6366
lambda args: args,
6467
lambda: (
6568
(
66-
1,2,3,4,0,b"",tuple(),tuple(),tuple(),
67-
tuple(),tuple(),"filename","name",1,b"",
69+
1, 2,
70+
3, 4, 0,
71+
b"", tuple(), tuple(),
72+
tuple(), tuple(), tuple(),
73+
"filename", "name", 1,
74+
b"",
6875
),
6976
),
7077
resultspec="O",
7178
argspec="iiiiiOOOOOOOOiO",
7279
arguments=[
73-
"int argcount", "int kwonlyargcount", "int nlocals",
74-
"int stacksize", "int flags", "PyObject* code",
75-
"PyObject* consts", "PyObject* names", "PyObject* varnames",
76-
"PyObject* freevars", "PyObject* cellvars",
80+
"int argcount", "int kwonlyargcount",
81+
"int nlocals", "int stacksize", "int flags",
82+
"PyObject* code", "PyObject* consts", "PyObject* names",
83+
"PyObject* varnames", "PyObject* freevars", "PyObject* cellvars",
7784
"PyObject* filename", "PyObject* name", "int firstlineno",
78-
"PyObject* lnotab"
85+
"PyObject* lnotab",
7986
],
80-
cmpfunc=lambda cr,pr: isinstance(cr, types.CodeType),
87+
cmpfunc=lambda cr, pr: isinstance(cr, types.CodeType),
8188
)

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

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1451,34 +1451,44 @@ Object call() {
14511451
@GenerateNodeFactory
14521452
public abstract static class CodeTypeNode extends PythonBuiltinNode {
14531453
@Specialization
1454-
Object call(PythonClass cls, int argcount, int kwonlyargcount, int nlocals, int stacksize,
1455-
int flags, String codestring, Object constants, Object names, PTuple varnames,
1456-
String filename, String name, int firstlineno, Object lnotab, PTuple freevars,
1457-
PTuple cellvars) {
1458-
return factory().createCode(cls, argcount, kwonlyargcount, nlocals, stacksize,
1459-
flags, codestring, constants, names, varnames.getArray(),
1460-
filename, name, firstlineno, lnotab, freevars.getArray(),
1461-
cellvars.getArray());
1454+
Object call(PythonClass cls, int argcount, int kwonlyargcount,
1455+
int nlocals, int stacksize, int flags,
1456+
String codestring, PTuple constants, PTuple names,
1457+
PTuple varnames, PTuple freevars, PTuple cellvars,
1458+
String filename, String name, int firstlineno,
1459+
String lnotab) {
1460+
return factory().createCode(cls, argcount, kwonlyargcount,
1461+
nlocals, stacksize, flags,
1462+
codestring, constants, names,
1463+
varnames.getArray(), freevars.getArray(), cellvars.getArray(),
1464+
filename, name, firstlineno,
1465+
lnotab);
14621466
}
14631467

14641468
@Specialization
14651469
@TruffleBoundary
1466-
Object call(PythonClass cls, int argcount, int kwonlyargcount, int nlocals, int stacksize,
1467-
int flags, PBytes codestring, Object constants, Object names, PTuple varnames,
1468-
PString filename, PString name, int firstlineno, Object lnotab, PTuple freevars,
1469-
PTuple cellvars) {
1470-
return factory().createCode(cls, argcount, kwonlyargcount, nlocals, stacksize,
1471-
flags, new String(codestring.getInternalByteArray()), constants, names, varnames.getArray(),
1472-
filename.getValue(), name.getValue(), firstlineno, lnotab, freevars.getArray(),
1473-
cellvars.getArray());
1470+
Object call(PythonClass cls, int argcount, int kwonlyargcount,
1471+
int nlocals, int stacksize, int flags,
1472+
PBytes codestring, PTuple constants, PTuple names,
1473+
PTuple varnames, PTuple freevars, PTuple cellvars,
1474+
PString filename, PString name, int firstlineno,
1475+
PBytes lnotab) {
1476+
return factory().createCode(cls, argcount, kwonlyargcount,
1477+
nlocals, stacksize, flags,
1478+
new String(codestring.getInternalByteArray()), constants, names,
1479+
varnames.getArray(), freevars.getArray(), cellvars.getArray(),
1480+
filename.getValue(), name.getValue(), firstlineno,
1481+
lnotab);
14741482
}
14751483

14761484
@SuppressWarnings("unused")
14771485
@Fallback
1478-
Object call(Object cls, Object argcount, Object kwonlyargcount, Object nlocals, Object stacksize,
1479-
Object flags, Object codestring, Object constants, Object names, Object varnames,
1480-
Object filename, Object name, Object firstlineno, Object lnotab, Object freevars,
1481-
Object cellvars) {
1486+
Object call(Object cls, Object argcount, Object kwonlyargcount,
1487+
Object nlocals, Object stacksize, Object flags,
1488+
Object codestring, Object constants, Object names,
1489+
Object varnames, Object freevars, Object cellvars,
1490+
Object filename, Object name, Object firstlineno,
1491+
Object lnotab) {
14821492
throw raise(PythonErrorType.NotImplementedError, "code object instance from generic arguments");
14831493
}
14841494
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/code/PCode.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,12 @@ public PCode(PythonClass cls, RootNode rootNode, PythonCore core) {
125125
this.lnotab = null;
126126
}
127127

128-
public PCode(PythonClass cls, int argcount, int kwonlyargcount, int nlocals, int stacksize,
129-
int flags, String codestring, Object constants, Object names, Object[] varnames,
130-
String filename, String name, int firstlineno, Object lnotab, Object[] freevars,
131-
Object[] cellvars) {
128+
public PCode(PythonClass cls, int argcount, int kwonlyargcount,
129+
int nlocals, int stacksize, int flags,
130+
String codestring, Object constants, Object names,
131+
Object[] varnames, Object[] freevars, Object[] cellvars,
132+
String filename, String name, int firstlineno,
133+
Object lnotab) {
132134
super(cls);
133135
this.rootNode = null;
134136
this.argcount = argcount;

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/object/PythonObjectFactory.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -702,11 +702,16 @@ public Object createCode(RootNode result) {
702702
return trace(new PCode(lookupClass(PythonBuiltinClassType.PCode), result, getCore()));
703703
}
704704

705-
public Object createCode(PythonClass cls, int argcount, int kwonlyargcount, int nlocals, int stacksize, int flags, String codestring, Object constants, Object names, Object[] varnames,
706-
String filename, String name, int firstlineno, Object lnotab, Object[] freevars, Object[] cellvars) {
707-
return trace(new PCode(cls, argcount, kwonlyargcount, nlocals, stacksize,
708-
flags, codestring, constants, names, varnames,
709-
filename, name, firstlineno, lnotab, freevars,
710-
cellvars));
705+
public Object createCode(PythonClass cls, int argcount, int kwonlyargcount,
706+
int nlocals, int stacksize, int flags,
707+
String codestring, Object constants, Object names,
708+
Object[] varnames, Object[] freevars, Object[] cellvars,
709+
String filename, String name, int firstlineno,
710+
Object lnotab) {
711+
return trace(new PCode(cls, argcount, kwonlyargcount,
712+
nlocals, stacksize, flags,
713+
codestring, constants, names,
714+
varnames, freevars, cellvars,
715+
filename, name, firstlineno, lnotab));
711716
}
712717
}

0 commit comments

Comments
 (0)