@@ -54,27 +54,19 @@ static PyObject* null_error(void) {
5454}
5555
5656int 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 ));
5858 if (result == Py_True ) {
5959 return 1 ;
6060 }
6161 return 0 ;
6262}
6363
6464static 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 ));
7066}
7167
7268static 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 ));
7870}
7971
8072PyObject * PyNumber_Add (PyObject * o1 , PyObject * o2 ) {
@@ -137,11 +129,7 @@ PyObject * PyNumber_Index(PyObject *o) {
137129 if (o == NULL ) {
138130 return null_error ();
139131 }
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 ));
145133}
146134
147135Py_ssize_t PyNumber_AsSsize_t (PyObject * item , PyObject * err ) {
@@ -179,66 +167,43 @@ Py_ssize_t PyNumber_AsSsize_t(PyObject *item, PyObject *err) {
179167 }
180168 else {
181169 /* 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 ));
185171 }
186172
187173 Py_DECREF (value );
188174 return -1 ;
189175}
190176
191177PyObject * 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 ));
197179}
198180
199181PyObject * 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 ));
205183}
206184
207185PyObject * 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 ));
213187}
214188
215189PyObject * 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 ));
221191}
222192
223193
224194PyObject * 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 ));
231196}
232197
233198int PySequence_Check (PyObject * s ) {
234199 if (s == NULL ) {
235200 return 0 ;
236201 }
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 ));
238203}
239204
240205Py_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 ));
242207}
243208
244209// taken from CPython "Objects/abstract.c"
@@ -249,39 +214,23 @@ Py_ssize_t PySequence_Length(PyObject *s) {
249214#define PySequence_Length PySequence_Size
250215
251216PyObject * 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 );
257218}
258219
259220int 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 ));
261222}
262223
263224PyObject * 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 ));
269226}
270227
271228PyObject * 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 ));
277230}
278231
279232PyObject * 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 ));
285234}
286235
287236// taken from CPython "Objects/abstract.c"
0 commit comments