Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r63036:d7a0fdc9bc85
Date: 2013-04-04 17:57 -0700
http://bitbucket.org/pypy/pypy/changeset/d7a0fdc9bc85/

Log:    disable cpyext's int APIs, removes more W_IntObject references

diff --git a/pypy/module/cpyext/__init__.py b/pypy/module/cpyext/__init__.py
--- a/pypy/module/cpyext/__init__.py
+++ b/pypy/module/cpyext/__init__.py
@@ -38,7 +38,6 @@
 import pypy.module.cpyext.tupleobject
 import pypy.module.cpyext.setobject
 import pypy.module.cpyext.dictobject
-import pypy.module.cpyext.intobject
 import pypy.module.cpyext.longobject
 import pypy.module.cpyext.listobject
 import pypy.module.cpyext.sequence
diff --git a/pypy/module/cpyext/longobject.py b/pypy/module/cpyext/longobject.py
--- a/pypy/module/cpyext/longobject.py
+++ b/pypy/module/cpyext/longobject.py
@@ -4,7 +4,6 @@
     CONST_STRING, ADDR, CANNOT_FAIL)
 from pypy.objspace.std.longobject import W_LongObject
 from pypy.interpreter.error import OperationError
-from pypy.module.cpyext.intobject import PyInt_AsUnsignedLongMask
 from rpython.rlib.rbigint import rbigint
 from rpython.rlib.rarithmetic import intmask
 
@@ -66,7 +65,8 @@
     """Return a C unsigned long from a Python long integer, without checking
     for overflow.
     """
-    return PyInt_AsUnsignedLongMask(space, w_long)
+    num = space.bigint_w(w_long)
+    return num.ulonglongmask()
 
 @cpython_api([PyObject], lltype.Signed, error=-1)
 def PyLong_AsLong(space, w_long):
diff --git a/pypy/module/cpyext/structmember.py 
b/pypy/module/cpyext/structmember.py
--- a/pypy/module/cpyext/structmember.py
+++ b/pypy/module/cpyext/structmember.py
@@ -3,7 +3,7 @@
 from rpython.rtyper.lltypesystem import rffi, lltype
 from pypy.module.cpyext.structmemberdefs import *
 from pypy.module.cpyext.api import ADDR, PyObjectP, cpython_api
-from pypy.module.cpyext.intobject import PyInt_AsLong, PyInt_AsUnsignedLong
+from pypy.module.cpyext.longobject import PyLong_AsLong, PyLong_AsUnsignedLong
 from pypy.module.cpyext.pyerrors import PyErr_Occurred
 from pypy.module.cpyext.pyobject import PyObject, Py_DecRef, from_ref, make_ref
 from pypy.module.cpyext.unicodeobject import PyUnicode_FromString
@@ -14,15 +14,15 @@
 from rpython.rlib.unroll import unrolling_iterable
 
 integer_converters = unrolling_iterable([
-    (T_SHORT,  rffi.SHORT,  PyInt_AsLong),
-    (T_INT,    rffi.INT,    PyInt_AsLong),
-    (T_LONG,   rffi.LONG,   PyInt_AsLong),
-    (T_USHORT, rffi.USHORT, PyInt_AsUnsignedLong),
-    (T_UINT,   rffi.UINT,   PyInt_AsUnsignedLong),
-    (T_ULONG,  rffi.ULONG,  PyInt_AsUnsignedLong),
-    (T_BYTE,   rffi.SIGNEDCHAR, PyInt_AsLong),
-    (T_UBYTE,  rffi.UCHAR,  PyInt_AsUnsignedLong),
-    (T_BOOL,   rffi.UCHAR,  PyInt_AsLong),
+    (T_SHORT,  rffi.SHORT,  PyLong_AsLong),
+    (T_INT,    rffi.INT,    PyLong_AsLong),
+    (T_LONG,   rffi.LONG,   PyLong_AsLong),
+    (T_USHORT, rffi.USHORT, PyLong_AsUnsignedLong),
+    (T_UINT,   rffi.UINT,   PyLong_AsUnsignedLong),
+    (T_ULONG,  rffi.ULONG,  PyLong_AsUnsignedLong),
+    (T_BYTE,   rffi.SIGNEDCHAR, PyLong_AsLong),
+    (T_UBYTE,  rffi.UCHAR,  PyLong_AsUnsignedLong),
+    (T_BOOL,   rffi.UCHAR,  PyLong_AsLong),
     (T_FLOAT,  rffi.FLOAT,  PyFloat_AsDouble),
     (T_DOUBLE, rffi.DOUBLE, PyFloat_AsDouble),
     (T_LONGLONG,  rffi.LONGLONG,  PyLong_AsLongLong),
diff --git a/pypy/module/cpyext/test/test_longobject.py 
b/pypy/module/cpyext/test/test_longobject.py
--- a/pypy/module/cpyext/test/test_longobject.py
+++ b/pypy/module/cpyext/test/test_longobject.py
@@ -123,6 +123,12 @@
         assert api._PyLong_NumBits(space.wrap(3)) == 2
         assert api._PyLong_NumBits(space.wrap(-3)) == 2
 
+    def test_as_ulongmask(self, space, api):
+        assert api.PyLong_AsUnsignedLongMask(
+            space.wrap(sys.maxsize * 2 + 1)) == 18446744073709551615
+        assert api.PyLong_AsUnsignedLongMask(
+            space.wrap(sys.maxsize * 2 + 2)) == 0
+
 class AppTestLongObject(AppTestCpythonExtensionBase):
     def test_fromunsignedlong(self):
         module = self.import_extension('foo', [
@@ -153,7 +159,7 @@
                  return PyLong_FromSize_t((size_t)-1);
              """)])
         import sys
-        assert module.from_unsignedlong() == 2 * sys.maxint + 1
+        assert module.from_unsignedlong() == 2 * sys.maxsize + 1
 
     def test_fromstring(self):
         module = self.import_extension('foo', [
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to