[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