Author: Alex Gaynor <alex.gay...@gmail.com>
Branch: 
Changeset: r64744:661d7f7624dc
Date: 2013-06-03 20:41 -0700
http://bitbucket.org/pypy/pypy/changeset/661d7f7624dc/

Log:    Inline into rbigint so that comparisons can be constant folded.

diff --git a/pypy/module/pypyjit/policy.py b/pypy/module/pypyjit/policy.py
--- a/pypy/module/pypyjit/policy.py
+++ b/pypy/module/pypyjit/policy.py
@@ -118,7 +118,7 @@
     def look_inside_function(self, func):
         mod = func.__module__ or '?'
 
-        if mod == 'rpython.rlib.rbigint' or mod == 'rpython.rlib.rlocale' or 
mod == 'rpython.rlib.rsocket':
+        if mod == 'rpython.rlib.rlocale' or mod == 'rpython.rlib.rsocket':
             return False
         if mod.startswith('pypy.interpreter.astcompiler.'):
             return False
diff --git a/pypy/module/pypyjit/test/test_policy.py 
b/pypy/module/pypyjit/test/test_policy.py
--- a/pypy/module/pypyjit/test/test_policy.py
+++ b/pypy/module/pypyjit/test/test_policy.py
@@ -8,7 +8,7 @@
 
 def test_bigint():
     from rpython.rlib.rbigint import rbigint
-    assert not pypypolicy.look_inside_function(rbigint.lt.im_func)
+    assert pypypolicy.look_inside_function(rbigint.lt.im_func)
 
 def test_rlocale():
     from rpython.rlib.rlocale import setlocale
diff --git a/pypy/module/pypyjit/test_pypy_c/test_misc.py 
b/pypy/module/pypyjit/test_pypy_c/test_misc.py
--- a/pypy/module/pypyjit/test_pypy_c/test_misc.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_misc.py
@@ -74,7 +74,6 @@
             jump(..., descr=...)
         """)
 
-
     def test_mixed_type_loop(self):
         def main(n):
             i = 0.0
@@ -94,7 +93,6 @@
             jump(..., descr=...)
         """)
 
-
     def test_cached_pure_func_of_equal_fields(self):
         def main(n):
             class A(object):
@@ -196,7 +194,6 @@
             jump(..., descr=...)
         """)
 
-
     def test_chain_of_guards(self):
         src = """
         class A(object):
@@ -220,7 +217,6 @@
         loops = log.loops_by_filename(self.filepath)
         assert len(loops) == 1
 
-
     def test_unpack_iterable_non_list_tuple(self):
         def main(n):
             import array
@@ -258,7 +254,6 @@
             jump(..., descr=...)
         """)
 
-
     def test_dont_trace_every_iteration(self):
         def main(a, b):
             i = sa = 0
@@ -289,7 +284,6 @@
         assert log.result == 300 * (-10 % -20)
         assert log.jit_summary.tracing_no == 1
 
-
     def test_overflow_checking(self):
         """
         This test only checks that we get the expected result, not that any
@@ -298,7 +292,8 @@
         def main():
             import sys
             def f(a,b):
-                if a < 0: return -1
+                if a < 0:
+                    return -1
                 return a-b
             #
             total = sys.maxint - 2147483647
@@ -309,7 +304,6 @@
         #
         self.run_and_check(main, [])
 
-
     def test_global(self):
         log = self.run("""
         i = 0
@@ -404,3 +398,14 @@
         # the following assertion fails if the loop was cancelled due
         # to "abort: vable escape"
         assert len(log.loops_by_id("exc_info")) == 1
+
+    def test_long_comparison(self):
+        def main(n):
+            while n:
+                12345L > 123L  # ID: long_op
+                n -= 1
+
+        log = self.run(main, [300])
+        loop, = log.loops_by_id("long_op")
+        assert log.match("""
+        """)
diff --git a/rpython/rtyper/lltypesystem/rstr.py 
b/rpython/rtyper/lltypesystem/rstr.py
--- a/rpython/rtyper/lltypesystem/rstr.py
+++ b/rpython/rtyper/lltypesystem/rstr.py
@@ -332,7 +332,7 @@
             newstr = s2.malloc(len1 + len2)
             newstr.copy_contents_from_str(s1, newstr, 0, 0, len1)
         else:
-            newstr = s1.malloc(len1 + len2)            
+            newstr = s1.malloc(len1 + len2)
             newstr.copy_contents(s1, newstr, 0, 0, len1)
         if typeOf(s2) == Ptr(STR):
             newstr.copy_contents_from_str(s2, newstr, 0, len1, len2)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to