[pypy-commit] pypy win64-stage1: weird special casing in std-objspace.py::wrap. This function is not even

ctismer noreply at buildbot.pypy.org
Sun Dec 4 05:39:38 CET 2011


Author: Christian Tismer <tismer at stackless.com>
Branch: win64-stage1
Changeset: r50104:5b5913c63621
Date: 2011-12-04 05:39 +0100
http://bitbucket.org/pypy/pypy/changeset/5b5913c63621/

Log:	weird special casing in std-objspace.py::wrap. This function is not
	even RPython, and I had to inline is_valid_int. Why is this so
	special? Is that still necessary, or just not changed?

diff --git a/pypy/objspace/std/objspace.py b/pypy/objspace/std/objspace.py
--- a/pypy/objspace/std/objspace.py
+++ b/pypy/objspace/std/objspace.py
@@ -9,7 +9,7 @@
 from pypy.objspace.descroperation import DescrOperation, raiseattrerror
 from pypy.rlib.objectmodel import instantiate, r_dict, specialize, is_annotation_constant
 from pypy.rlib.debug import make_sure_not_resized
-from pypy.rlib.rarithmetic import base_int, widen, is_valid_int
+from pypy.rlib.rarithmetic import base_int, widen, maxint
 from pypy.rlib.objectmodel import we_are_translated
 from pypy.rlib import jit
 
@@ -160,11 +160,15 @@
         if isinstance(x, OperationError):
             raise TypeError, ("attempt to wrap already wrapped exception: %s"%
                               (x,))
-        if is_valid_int(x):
+        if isinstance(x, int):
             if isinstance(x, bool):
                 return self.newbool(x)
             else:
                 return self.newint(x)
+        # this is an inlined 'is_valid_int' which cannot be used
+        # due to the special annotation nature of 'wrap'.
+        if isinstance(x, long) and (-maxint - 1 <= x <= maxint):
+            return self.newint(x)
         if isinstance(x, str):
             return wrapstr(self, x)
         if isinstance(x, unicode):


More information about the pypy-commit mailing list