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