@@ -54,27 +54,19 @@ static PyObject* null_error(void) {
54
54
}
55
55
56
56
int PyNumber_Check (PyObject * o ) {
57
- PyObject * result = to_sulong ( truffle_invoke ( PY_TRUFFLE_CEXT , "PyNumber_Check" , to_java ( o ) ));
57
+ PyObject * result = UPCALL_CEXT_O ( "PyNumber_Check" , native_to_java ( o ));
58
58
if (result == Py_True ) {
59
59
return 1 ;
60
60
}
61
61
return 0 ;
62
62
}
63
63
64
64
static PyObject * do_unaryop (PyObject * v , UnaryOp unaryop , char * unaryop_name ) {
65
- PyObject * result = truffle_invoke (PY_TRUFFLE_CEXT , "PyNumber_UnaryOp" , to_java (v ), unaryop , truffle_read_string (unaryop_name ));
66
- if (result == ERROR_MARKER ) {
67
- return NULL ;
68
- }
69
- return to_sulong (result );
65
+ return UPCALL_CEXT_O ("PyNumber_UnaryOp" , native_to_java (v ), unaryop , polyglot_from_string (unaryop_name , SRC_CS ));
70
66
}
71
67
72
68
static PyObject * do_binop (PyObject * v , PyObject * w , BinOp binop , char * binop_name ) {
73
- PyObject * result = truffle_invoke (PY_TRUFFLE_CEXT , "PyNumber_BinOp" , to_java (v ), to_java (w ), binop , truffle_read_string (binop_name ));
74
- if (result == ERROR_MARKER ) {
75
- return NULL ;
76
- }
77
- return to_sulong (result );
69
+ return UPCALL_CEXT_O ("PyNumber_BinOp" , native_to_java (v ), native_to_java (w ), binop , polyglot_from_string (binop_name , SRC_CS ));
78
70
}
79
71
80
72
PyObject * PyNumber_Add (PyObject * o1 , PyObject * o2 ) {
@@ -137,11 +129,7 @@ PyObject * PyNumber_Index(PyObject *o) {
137
129
if (o == NULL ) {
138
130
return null_error ();
139
131
}
140
- PyObject * result = truffle_invoke (PY_TRUFFLE_CEXT , "PyNumber_Index" , to_java (o ));
141
- if (result == ERROR_MARKER ) {
142
- return NULL ;
143
- }
144
- return to_sulong (result );
132
+ return UPCALL_CEXT_O ("PyNumber_Index" , native_to_java (o ));
145
133
}
146
134
147
135
Py_ssize_t PyNumber_AsSsize_t (PyObject * item , PyObject * err ) {
@@ -179,66 +167,43 @@ Py_ssize_t PyNumber_AsSsize_t(PyObject *item, PyObject *err) {
179
167
}
180
168
else {
181
169
/* Otherwise replace the error with caller's error object. */
182
- PyObject * t = PyTuple_New (1 );
183
- PyTuple_SetItem (t , 0 , PyObject_Type (item ));
184
- truffle_invoke (PY_TRUFFLE_CEXT , "PyErr_Format" , to_java (err ), truffle_read_string ("cannot fit '%s' into an index-sized integer" ), to_java (t ));
170
+ PyErr_Format (err , "cannot fit '%s' into an index-sized integer" , PyObject_Type (item ));
185
171
}
186
172
187
173
Py_DECREF (value );
188
174
return -1 ;
189
175
}
190
176
191
177
PyObject * PyNumber_Long (PyObject * o ) {
192
- PyObject * result = truffle_invoke (PY_TRUFFLE_CEXT , "PyNumber_Long" , to_java (o ));
193
- if (result == ERROR_MARKER ) {
194
- return NULL ;
195
- }
196
- return to_sulong (result );
178
+ return UPCALL_CEXT_O ("PyNumber_Long" , native_to_java (o ));
197
179
}
198
180
199
181
PyObject * PyNumber_Float (PyObject * o ) {
200
- PyObject * result = truffle_invoke (PY_TRUFFLE_CEXT , "PyNumber_Float" , to_java (o ));
201
- if (result == ERROR_MARKER ) {
202
- return NULL ;
203
- }
204
- return to_sulong (result );
182
+ return UPCALL_CEXT_O ("PyNumber_Float" , native_to_java (o ));
205
183
}
206
184
207
185
PyObject * PyNumber_Absolute (PyObject * o ) {
208
- void * result = polyglot_invoke (PY_TRUFFLE_CEXT , "PyNumber_Absolute" , to_java (o ));
209
- if (result == ERROR_MARKER ) {
210
- return NULL ;
211
- }
212
- return to_sulong (result );
186
+ return UPCALL_CEXT_O ("PyNumber_Absolute" , native_to_java (o ));
213
187
}
214
188
215
189
PyObject * PyNumber_Divmod (PyObject * a , PyObject * b ) {
216
- void * result = polyglot_invoke (PY_TRUFFLE_CEXT , "PyNumber_Divmod" , to_java (a ), to_java (b ));
217
- if (result == ERROR_MARKER ) {
218
- return NULL ;
219
- }
220
- return to_sulong (result );
190
+ return UPCALL_CEXT_O ("PyNumber_Divmod" , native_to_java (a ), native_to_java (b ));
221
191
}
222
192
223
193
224
194
PyObject * PyIter_Next (PyObject * iter ) {
225
- void * result = polyglot_invoke (PY_TRUFFLE_CEXT , "PyIter_Next" , to_java (iter ));
226
- if (result == ERROR_MARKER && PyErr_Occurred () && PyErr_ExceptionMatches (PyExc_StopIteration )) {
227
- PyErr_Clear ();
228
- return NULL ;
229
- }
230
- return to_sulong (result );
195
+ return UPCALL_CEXT_O ("PyIter_Next" , native_to_java (iter ));
231
196
}
232
197
233
198
int PySequence_Check (PyObject * s ) {
234
199
if (s == NULL ) {
235
200
return 0 ;
236
201
}
237
- return polyglot_as_i64 ( polyglot_invoke ( PY_TRUFFLE_CEXT , "PySequence_Check" , to_java ( s ) ));
202
+ return UPCALL_CEXT_I ( "PySequence_Check" , native_to_java ( s ));
238
203
}
239
204
240
205
Py_ssize_t PySequence_Size (PyObject * s ) {
241
- return polyglot_as_i64 ( polyglot_invoke ( PY_TRUFFLE_CEXT , "PyObject_Size" , to_java ( s ) ));
206
+ return UPCALL_CEXT_L ( "PyObject_Size" , native_to_java ( s ));
242
207
}
243
208
244
209
// taken from CPython "Objects/abstract.c"
@@ -249,39 +214,23 @@ Py_ssize_t PySequence_Length(PyObject *s) {
249
214
#define PySequence_Length PySequence_Size
250
215
251
216
PyObject * PySequence_GetItem (PyObject * s , Py_ssize_t i ) {
252
- void * result = polyglot_invoke (PY_TRUFFLE_CEXT , "PySequence_GetItem" , to_java (s ), i );
253
- if (result == ERROR_MARKER ) {
254
- return NULL ;
255
- }
256
- return to_sulong (result );
217
+ return UPCALL_CEXT_O ("PySequence_GetItem" , native_to_java (s ), i );
257
218
}
258
219
259
220
int PySequence_SetItem (PyObject * s , Py_ssize_t i , PyObject * o ) {
260
- return polyglot_as_i32 ( polyglot_invoke ( PY_TRUFFLE_CEXT , "PySequence_SetItem" , to_java (s ), i , to_java ( o ) ));
221
+ return UPCALL_CEXT_I ( "PySequence_SetItem" , native_to_java (s ), i , native_to_java ( o ));
261
222
}
262
223
263
224
PyObject * PySequence_Tuple (PyObject * v ) {
264
- void * result = polyglot_invoke (PY_TRUFFLE_CEXT , "PySequence_Tuple" , to_java (v ));
265
- if (result == ERROR_MARKER ) {
266
- return NULL ;
267
- }
268
- return to_sulong (result );
225
+ return UPCALL_CEXT_O ("PySequence_Tuple" , native_to_java (v ));
269
226
}
270
227
271
228
PyObject * PySequence_Fast (PyObject * v , const char * m ) {
272
- void * result = polyglot_invoke (PY_TRUFFLE_CEXT , "PySequence_Fast" , to_java (v ), polyglot_from_string (m , "ascii" ));
273
- if (result == ERROR_MARKER ) {
274
- return NULL ;
275
- }
276
- return to_sulong (result );
229
+ return UPCALL_CEXT_O ("PySequence_Fast" , native_to_java (v ), polyglot_from_string (m , SRC_CS ));
277
230
}
278
231
279
232
PyObject * PyMapping_GetItemString (PyObject * o , const char * key ) {
280
- void * result = polyglot_invoke (PY_TRUFFLE_CEXT , "PyObject_GetItem" , to_java (o ), polyglot_from_string (key , "utf-8" ));
281
- if (result == ERROR_MARKER ) {
282
- return NULL ;
283
- }
284
- return to_sulong (result );
233
+ return UPCALL_CEXT_O ("PyObject_GetItem" , native_to_java (o ), polyglot_from_string (key , SRC_CS ));
285
234
}
286
235
287
236
// taken from CPython "Objects/abstract.c"
0 commit comments