Author: Maciej Fijalkowski <fij...@gmail.com> Branch: optresult Changeset: r77532:bf00cd304d18 Date: 2015-05-25 13:04 +0200 http://bitbucket.org/pypy/pypy/changeset/bf00cd304d18/
Log: fix a small irrelevant test to get started diff --git a/rpython/jit/metainterp/optimizeopt/heap.py b/rpython/jit/metainterp/optimizeopt/heap.py --- a/rpython/jit/metainterp/optimizeopt/heap.py +++ b/rpython/jit/metainterp/optimizeopt/heap.py @@ -59,9 +59,8 @@ structinfo = optheap.ensure_ptr_info_arg0(op) arg1 = optheap.get_box_replacement(op.getarg(1)) if self.possible_aliasing(optheap, structinfo): - xxx self.force_lazy_setfield(optheap) - assert not self.possible_aliasing(optheap, structvalue) + assert not self.possible_aliasing(optheap, structinfo) cached_field = structinfo.getfield(op.getdescr()) if cached_field is not None: cached_field = optheap.get_box_replacement(cached_field) diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py --- a/rpython/jit/metainterp/optimizeopt/optimizer.py +++ b/rpython/jit/metainterp/optimizeopt/optimizer.py @@ -316,6 +316,18 @@ return fw return None + def getrawptrinfo(self, op, create=False, is_object=False): + assert op.type == 'i' + op = self.get_box_replacement(op) + assert op.type == 'i' + if isinstance(op, ConstInt): + return info.ConstRawInfo(op) + fw = op.get_forwarded() + if fw is not None: + assert isinstance(fw, info.RawPtrInfo) + return fw + return None + def get_box_replacement(self, op): return self.optimizer.get_box_replacement(op) diff --git a/rpython/jit/metainterp/optimizeopt/virtualize.py b/rpython/jit/metainterp/optimizeopt/virtualize.py --- a/rpython/jit/metainterp/optimizeopt/virtualize.py +++ b/rpython/jit/metainterp/optimizeopt/virtualize.py @@ -824,8 +824,9 @@ return offset, itemsize, descr def optimize_GETARRAYITEM_RAW_I(self, op): - value = self.getvalue(op.getarg(0)) - if value.is_virtual(): + opinfo = self.getrawptrinfo(op.getarg(0)) + if opinfo and opinfo.is_virtual(): + xxx indexbox = self.get_constant_box(op.getarg(1)) if indexbox is not None: offset, itemsize, descr = self._unpack_arrayitem_raw_op(op, indexbox) @@ -836,7 +837,7 @@ else: self.make_equal_to(op, itemvalue) return - value.ensure_nonnull() + self.make_nonnull(op.getarg(0)) self.emit_operation(op) optimize_GETARRAYITEM_RAW_F = optimize_GETARRAYITEM_RAW_I _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit