Author: Armin Rigo <[email protected]>
Branch: op_malloc_gc
Changeset: r50699:83ec8d8b7000
Date: 2011-12-19 09:11 +0100
http://bitbucket.org/pypy/pypy/changeset/83ec8d8b7000/

Log:    fix

diff --git a/pypy/jit/backend/llsupport/rewrite.py 
b/pypy/jit/backend/llsupport/rewrite.py
--- a/pypy/jit/backend/llsupport/rewrite.py
+++ b/pypy/jit/backend/llsupport/rewrite.py
@@ -1,3 +1,4 @@
+import sys
 from pypy.rlib.rarithmetic import ovfcheck
 from pypy.jit.metainterp.history import ConstInt, BoxPtr, ConstPtr
 from pypy.jit.metainterp.resoperation import ResOperation, rop
@@ -208,13 +209,16 @@
         """Try to generate or update a CALL_MALLOC_NURSERY.
         If that fails, generate a plain CALL_MALLOC_GC instead.
         """
+        if size <= (sys.maxint & ~(WORD-1)):
+            size = self.round_up_for_allocation(size)
+        else:
+            size = sys.maxint  #corner case: generate a malloc that always fail
+        #
         if not self.gc_ll_descr.can_use_nursery_malloc(size):
             self.gen_malloc_fixedsize(size, v_result)
             return
         #
-        size = self.round_up_for_allocation(size)
         op = None
-        #
         if self._op_malloc_nursery is not None:
             # already a MALLOC_NURSERY: increment its total size
             total_size = self._op_malloc_nursery.getarg(0).getint()
diff --git a/pypy/jit/backend/llsupport/test/test_rewrite.py 
b/pypy/jit/backend/llsupport/test/test_rewrite.py
--- a/pypy/jit/backend/llsupport/test/test_rewrite.py
+++ b/pypy/jit/backend/llsupport/test/test_rewrite.py
@@ -149,7 +149,7 @@
             jump()
         """, """
             [p1]
-            p0 = call_malloc_gc(ConstClass(malloc_fixedsize), 102, \
+            p0 = call_malloc_gc(ConstClass(malloc_fixedsize), 104, \
                                 descr=malloc_fixedsize_descr)
             setfield_gc(p0, ConstClass(o_vtable), descr=vtable_descr)
             jump()
@@ -364,15 +364,15 @@
         self.gc_ll_descr.max_size_of_young_obj = 100
         self.check_rewrite("""
             []
-            p0 = new_array(100, descr=bdescr)
+            p0 = new_array(103, descr=bdescr)
             jump()
         """, """
             []
             p0 = call_malloc_gc(ConstClass(malloc_fixedsize), \
-                                %(bdescr.basesize + 100)d,    \
+                                %(bdescr.basesize + 104)d,    \
                                 descr=malloc_fixedsize_descr)
             setfield_gc(p0, 8765, descr=tiddescr)
-            setfield_gc(p0, 100, descr=blendescr)
+            setfield_gc(p0, 103, descr=blendescr)
             jump()
         """)
 
@@ -421,7 +421,7 @@
             jump()
         """, """
             [p1]
-            p0 = call_malloc_gc(ConstClass(malloc_fixedsize), 102, \
+            p0 = call_malloc_gc(ConstClass(malloc_fixedsize), 104, \
                                 descr=malloc_fixedsize_descr)
             setfield_gc(p0, 9315, descr=tiddescr)
             setfield_gc(p0, ConstClass(o_vtable), descr=vtable_descr)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to