[pypy-commit] pypy optresult: fix a small irrelevant test to get started
fijal
noreply at buildbot.pypy.org
Mon May 25 13:43:18 CEST 2015
Author: Maciej Fijalkowski <fijall at 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
More information about the pypy-commit
mailing list