Author: hager <sven.ha...@uni-duesseldorf.de> Branch: ppc-jit-backend Changeset: r53231:58aa53f6623d Date: 2012-03-05 07:11 -0800 http://bitbucket.org/pypy/pypy/changeset/58aa53f6623d/
Log: adjust prepare_cond_call_gc_wb to ARM backend diff --git a/pypy/jit/backend/ppc/regalloc.py b/pypy/jit/backend/ppc/regalloc.py --- a/pypy/jit/backend/ppc/regalloc.py +++ b/pypy/jit/backend/ppc/regalloc.py @@ -22,6 +22,7 @@ from pypy.jit.backend.llsupport.descr import unpack_arraydescr from pypy.jit.backend.llsupport.descr import unpack_fielddescr from pypy.jit.backend.llsupport.descr import unpack_interiorfielddescr +from pypy.rlib.objectmodel import we_are_translated # xxx hack: set a default value for TargetToken._arm_loop_code. If 0, we know # that it is a LABEL that was not compiled yet. @@ -812,14 +813,26 @@ def prepare_cond_call_gc_wb(self, op): assert op.result is None N = op.numargs() - # we force all arguments in a reg (unless they are Consts), - # because it will be needed anyway by the following setfield_gc - # or setarrayitem_gc. It avoids loading it twice from the memory. + # we force all arguments in a reg because it will be needed anyway by + # the following setfield_gc or setarrayitem_gc. It avoids loading it + # twice from the memory. arglocs = [] args = op.getarglist() for i in range(N): loc = self._ensure_value_is_boxed(op.getarg(i), args) arglocs.append(loc) + card_marking = False + if op.getopnum() == rop.COND_CALL_GC_WB_ARRAY: + descr = op.getdescr() + if we_are_translated(): + cls = self.cpu.gc_ll_descr.has_write_barrier_class() + assert cls is not None and isinstance(descr, cls) + card_marking = descr.jit_wb_cards_set != 0 + if card_marking: # allocate scratch registers + tmp1 = self.get_scratch_reg(INT) + tmp2 = self.get_scratch_reg(INT) + arglocs.append(tmp1) + arglocs.append(tmp2) return arglocs prepare_cond_call_gc_wb_array = prepare_cond_call_gc_wb _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit