[pypy-svn] r13598 - in pypy/dist/pypy: rpython translator/c/test
arigo at codespeak.net
arigo at codespeak.net
Sun Jun 19 13:16:32 CEST 2005
Author: arigo
Date: Sun Jun 19 13:16:29 2005
New Revision: 13598
Modified:
pypy/dist/pypy/rpython/rbool.py
pypy/dist/pypy/translator/c/test/test_annotated.py
Log:
Bug fix. Conversions from/to pyobj_repr should not use gendirectcall(),
because translator/c/wrapper.py cannot cope with new graphs suddenly
appearing.
Modified: pypy/dist/pypy/rpython/rbool.py
==============================================================================
--- pypy/dist/pypy/rpython/rbool.py (original)
+++ pypy/dist/pypy/rpython/rbool.py Sun Jun 19 13:16:29 2005
@@ -2,7 +2,7 @@
from pypy.annotation import model as annmodel
from pypy.rpython.lltype import Signed, Unsigned, Bool, Float, pyobjectptr
from pypy.rpython.rmodel import Repr, TyperError, IntegerRepr, BoolRepr
-from pypy.rpython.robject import PyObjRepr
+from pypy.rpython.robject import PyObjRepr, pyobj_repr
debug = False
@@ -48,31 +48,15 @@
return llops.genop('cast_bool_to_int', [v], resulttype=Signed)
return NotImplemented
-pyobj_true = pyobjectptr(True)
-pyobj_false = pyobjectptr(False)
-
-def ll_pyobj2bool(pyobjptr):
- if pyobjptr == pyobj_true:
- return True
- elif pyobjptr == pyobj_false:
- return False
- else:
- raise TypeError
-
-def ll_bool2pyobj(boolval):
- if boolval:
- return pyobj_true
- else:
- return pyobj_false
-
class __extend__(pairtype(PyObjRepr, BoolRepr)):
def convert_from_to((r_from, r_to), v, llops):
if r_to.lowleveltype == Bool:
- return llops.gendirectcall(ll_pyobj2bool, v)
+ return llops.gencapicall('PyObject_IsTrue', [v], resulttype=Bool)
return NotImplemented
class __extend__(pairtype(BoolRepr, PyObjRepr)):
def convert_from_to((r_from, r_to), v, llops):
if r_from.lowleveltype == Bool:
- return llops.gendirectcall(ll_bool2pyobj, v)
+ return llops.gencapicall('PyBool_FromLong', [v],
+ resulttype = pyobj_repr)
return NotImplemented
Modified: pypy/dist/pypy/translator/c/test/test_annotated.py
==============================================================================
--- pypy/dist/pypy/translator/c/test/test_annotated.py (original)
+++ pypy/dist/pypy/translator/c/test/test_annotated.py Sun Jun 19 13:16:29 2005
@@ -128,3 +128,9 @@
for n in [-1,0,1,2]:
result.append(fn(n))
assert result == [-1,0,1,2]
+
+ def test_is_perfect_number(self):
+ fn = self.getcompiled(snippet.is_perfect_number)
+ for i in range(1, 33):
+ perfect = fn(i)
+ assert perfect is (i in (6,28))
More information about the Pypy-commit
mailing list