From: Armin R. <ar...@us...> - 2003-10-14 16:41:45
|
Update of /cvsroot/psyco/psyco/c/Objects In directory sc8-pr-cvs1:/tmp/cvs-serv10198/c/Objects Modified Files: pabstract.c Log Message: fixed old-style number operations Index: pabstract.c =================================================================== RCS file: /cvsroot/psyco/psyco/c/Objects/pabstract.c,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** pabstract.c 23 Sep 2003 15:43:57 -0000 1.18 --- pabstract.c 14 Oct 2003 16:41:41 -0000 1.19 *************** *** 603,610 **** } if (!NEW_STYLE_NUMBER(vtp) || !NEW_STYLE_NUMBER(wtp)) { ! /* could PyNumber_CoerceEx possibly succeed? */ ! if ((vtp->tp_as_number && vtp->tp_as_number->nb_coerce) || ! (wtp->tp_as_number && wtp->tp_as_number->nb_coerce)) { ! /* yes -- but we don't try to optimize old-style numbers any further here */ return psyco_generic_call(po, cimpl_oldstyle_binary_op1, --- 603,624 ---- } if (!NEW_STYLE_NUMBER(vtp) || !NEW_STYLE_NUMBER(wtp)) { ! /* inline a bit of PyNumber_CoerceEx */ ! if (vtp == wtp) { ! /* PyNumber_CoerceEx returns 0 in this case */ ! PyNumberMethods *mv = vtp->tp_as_number; ! if (mv) { ! binaryfunc slot; ! slot = *NB_BINOP(mv, op_slot); ! if (slot) { ! x = Psyco_META2(po, slot, ! CfReturnRef|CfPyErrIfNull, ! "vv", v, w); ! return x; ! } ! } ! } ! else if ((vtp->tp_as_number && vtp->tp_as_number->nb_coerce) || ! (wtp->tp_as_number && wtp->tp_as_number->nb_coerce)) { ! /* stop inlining now, we don't try to optimize old-style numbers any further here */ return psyco_generic_call(po, cimpl_oldstyle_binary_op1, |