Author: Maciej Fijalkowski <fij...@gmail.com> Branch: jitframe-on-heap Changeset: r61826:2e268ed9c59d Date: 2013-02-26 13:23 +0200 http://bitbucket.org/pypy/pypy/changeset/2e268ed9c59d/
Log: merge diff --git a/rpython/annotator/builtin.py b/rpython/annotator/builtin.py --- a/rpython/annotator/builtin.py +++ b/rpython/annotator/builtin.py @@ -405,7 +405,7 @@ from rpython.rtyper.lltypesystem import lltype def malloc(s_T, s_n=None, s_flavor=None, s_zero=None, s_track_allocation=None, - s_add_memory_pressure=None, s_immortal=None): + s_add_memory_pressure=None): assert (s_n is None or s_n.knowntype == int or issubclass(s_n.knowntype, rpython.rlib.rarithmetic.base_int)) assert s_T.is_constant() diff --git a/rpython/jit/backend/llsupport/assembler.py b/rpython/jit/backend/llsupport/assembler.py --- a/rpython/jit/backend/llsupport/assembler.py +++ b/rpython/jit/backend/llsupport/assembler.py @@ -85,7 +85,8 @@ debug_stop('jit-backend-counts') # when finishing, we only have one value at [0], the rest dies self.gcmap_for_finish = lltype.malloc(jitframe.GCMAP, 1, - flavor='raw', immortal=True) + flavor='raw', + track_allocation=False) self.gcmap_for_finish[0] = r_uint(1) def rebuild_faillocs_from_descr(self, descr, inputargs): diff --git a/rpython/jit/backend/x86/assembler.py b/rpython/jit/backend/x86/assembler.py --- a/rpython/jit/backend/x86/assembler.py +++ b/rpython/jit/backend/x86/assembler.py @@ -1967,12 +1967,11 @@ self._push_all_regs_to_frame(mc, [], withfloats) if exc: - # We might have an exception pending. Load it into ebx - # (this is a register saved across calls, both if 32 or 64) + # We might have an exception pending. Load it into ebx... mc.MOV(ebx, heap(self.cpu.pos_exc_value())) mc.MOV(heap(self.cpu.pos_exception()), imm0) mc.MOV(heap(self.cpu.pos_exc_value()), imm0) - # save ebx into 'jf_guard_exc' + # ...and save ebx into 'jf_guard_exc' offset = self.cpu.get_ofs_of_frame_field('jf_guard_exc') mc.MOV_br(offset, ebx.value) @@ -1986,7 +1985,7 @@ mc.MOV_br(ofs2, eax.value) mc.POP(eax) mc.MOV_br(ofs, eax.value) - # store the gc pattern + # the return value is the jitframe mc.MOV_rr(eax.value, ebp.value) self._call_footer() diff --git a/rpython/memory/gc/minimark.py b/rpython/memory/gc/minimark.py --- a/rpython/memory/gc/minimark.py +++ b/rpython/memory/gc/minimark.py @@ -639,8 +639,14 @@ # The nursery might not be empty now, because of # execute_finalizers(). If it is almost full again, # we need to fix it with another call to minor_collection(). - if self.nursery_free + totalsize > self.nursery_real_top: - self.minor_collection() + if self.nursery_free + totalsize > self.nursery_top: + # + if self.nursery_free + totalsize > self.nursery_real_top: + self.minor_collection() + # then the nursery is empty + else: + # we just need to clean up a bit more of the nursery + self.move_nursery_top(totalsize) # result = self.nursery_free self.nursery_free = result + totalsize diff --git a/rpython/rtyper/lltypesystem/opimpl.py b/rpython/rtyper/lltypesystem/opimpl.py --- a/rpython/rtyper/lltypesystem/opimpl.py +++ b/rpython/rtyper/lltypesystem/opimpl.py @@ -529,7 +529,7 @@ assert A.TO.OF.TO._gckind == 'gc' else: assert isinstance(A.TO, lltype.GcStruct) - assert hasattr(A.TO, '_arrayfld') + assert A.TO._arrayfld is not None assert type(source_start) is int assert type(dest_start) is int assert type(length) is int diff --git a/rpython/rtyper/rbuiltin.py b/rpython/rtyper/rbuiltin.py --- a/rpython/rtyper/rbuiltin.py +++ b/rpython/rtyper/rbuiltin.py @@ -357,7 +357,7 @@ # annotation of low-level types def rtype_malloc(hop, i_flavor=None, i_zero=None, i_track_allocation=None, - i_add_memory_pressure=None, i_immortal=None): + i_add_memory_pressure=None): assert hop.args_s[0].is_constant() vlist = [hop.inputarg(lltype.Void, arg=0)] opname = 'malloc' @@ -366,10 +366,9 @@ (i_flavor, lltype.Void), (i_zero, None), (i_track_allocation, None), - (i_add_memory_pressure, None), - (i_immortal, None)) + (i_add_memory_pressure, None)) (v_flavor, v_zero, v_track_allocation, - v_add_memory_pressure, v_immortal) = kwds_v + v_add_memory_pressure) = kwds_v flags = {'flavor': 'gc'} if v_flavor is not None: flags['flavor'] = v_flavor.value _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit