[pypy-commit] pypy remove-getarrayitem-pure: Move code

sbauman pypy.commits at gmail.com
Tue Sep 6 16:43:32 EDT 2016


Author: Spenser Bauman <sabauma at gmail.com>
Branch: remove-getarrayitem-pure
Changeset: r86912:2fb300020852
Date: 2016-04-03 13:16 -0400
http://bitbucket.org/pypy/pypy/changeset/2fb300020852/

Log:	Move code

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
@@ -447,6 +447,8 @@
                 pass
             self.force_lazy_set(fielddescr, can_cache=False)
         for arraydescr in effectinfo.write_descrs_arrays:
+            if arraydescr.is_always_pure():
+                continue
             self.force_lazy_setarrayitem(arraydescr, can_cache=False)
             if arraydescr in self.corresponding_array_descrs:
                 dictdescr = self.corresponding_array_descrs.pop(arraydescr)
@@ -552,10 +554,7 @@
         cf.do_setfield(self, op)
 
     def optimize_GETARRAYITEM_GC_I(self, op):
-        arrayinfo = self.ensure_ptr_info_arg0(op)
-        indexb = self.getintbound(op.getarg(1))
         arraydescr = op.getdescr()
-
         if (arraydescr.is_always_pure() and
             self.get_constant_box(op.getarg(0)) is not None and
             self.get_constant_box(op.getarg(1)) is not None):
@@ -563,6 +562,8 @@
             self.optimizer.make_constant(op, resbox)
             return
 
+        arrayinfo = self.ensure_ptr_info_arg0(op)
+        indexb = self.getintbound(op.getarg(1))
         cf = None
         if indexb.is_constant():
             index = indexb.getint()


More information about the pypy-commit mailing list