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