[pypy-commit] pypy improve-rbigint: Revert changes to longlongmask, and rather use intmask. This fixes objspace test
Stian Andreassen
noreply at buildbot.pypy.org
Mon Jul 23 03:00:07 CEST 2012
Author: Stian Andreassen
Branch: improve-rbigint
Changeset: r56397:5c650b1b8752
Date: 2012-07-23 02:58 +0200
http://bitbucket.org/pypy/pypy/changeset/5c650b1b8752/
Log: Revert changes to longlongmask, and rather use intmask. This fixes
objspace test
diff --git a/pypy/rlib/rarithmetic.py b/pypy/rlib/rarithmetic.py
--- a/pypy/rlib/rarithmetic.py
+++ b/pypy/rlib/rarithmetic.py
@@ -115,21 +115,16 @@
n -= 2*LONG_TEST
return int(n)
-if LONG_BIT >= 64:
- def longlongmask(n):
- assert isinstance(n, (int, long))
- return int(n)
-else:
- def longlongmask(n):
- """
- NOT_RPYTHON
- """
- assert isinstance(n, (int, long))
- n = long(n)
- n &= LONGLONG_MASK
- if n >= LONGLONG_TEST:
- n -= 2*LONGLONG_TEST
- return r_longlong(n)
+def longlongmask(n):
+ """
+ NOT_RPYTHON
+ """
+ assert isinstance(n, (int, long))
+ n = long(n)
+ n &= LONGLONG_MASK
+ if n >= LONGLONG_TEST:
+ n -= 2*LONGLONG_TEST
+ return r_longlong(n)
def longlonglongmask(n):
# Assume longlonglong doesn't overflow. This is perfectly fine for rbigint.
diff --git a/pypy/rlib/rbigint.py b/pypy/rlib/rbigint.py
--- a/pypy/rlib/rbigint.py
+++ b/pypy/rlib/rbigint.py
@@ -23,7 +23,10 @@
SHIFT = 63
BASE = long(1 << SHIFT)
UDIGIT_TYPE = r_ulonglong
- UDIGIT_MASK = longlongmask
+ if LONG_BIT >= 64:
+ UDIGIT_MASK = intmask
+ else:
+ UDIGIT_MASK = longlongmask
LONG_TYPE = rffi.__INT128
if LONG_BIT > SHIFT:
STORE_TYPE = lltype.Signed
More information about the pypy-commit
mailing list