Author: Maciej Fijalkowski <[email protected]>
Branch: optresult-unroll
Changeset: r78942:76446f3fe321
Date: 2015-08-12 17:46 +0200
http://bitbucket.org/pypy/pypy/changeset/76446f3fe321/

Log:    fix the test

diff --git a/rpython/jit/metainterp/optimizeopt/TODO 
b/rpython/jit/metainterp/optimizeopt/TODO
--- a/rpython/jit/metainterp/optimizeopt/TODO
+++ b/rpython/jit/metainterp/optimizeopt/TODO
@@ -1,6 +1,4 @@
-* arraylen_gc is not handling length bound optimization at all (we need to
-  wait till unrolling for tests)
 * mark_opaque_pointer is ignored (which is fine until unrolling)
-* clean up and unify _corresponding_vtable and vtable fields on SizeDescr
-  and check if all the usecases are necessary
 * implement unrolling
+* implement more cases of copying _fields and _items between normal info
+  and ConstPtrInfo when proven constant
diff --git a/rpython/jit/metainterp/optimizeopt/info.py 
b/rpython/jit/metainterp/optimizeopt/info.py
--- a/rpython/jit/metainterp/optimizeopt/info.py
+++ b/rpython/jit/metainterp/optimizeopt/info.py
@@ -344,6 +344,11 @@
     def all_items(self):
         return self._items
 
+    def copy_fields_to_const(self, constinfo, optheap):
+        if self._items is not None:
+            info = constinfo._get_array_info(optheap)
+            info._items = self._items[:]
+
     def _force_elements(self, op, optforce, descr):
         arraydescr = op.getdescr()
         for i in range(self.length):
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py 
b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -6004,22 +6004,20 @@
     def test_let_getfield_kill_setfields(self):
         ops = """
         [p0]
-        p1 = getfield_gc_r(p0, descr=valuedescr)
-        setfield_gc(p0, p1, descr=valuedescr)
-        setfield_gc(p0, p1, descr=valuedescr)
-        setfield_gc(p0, p0, descr=valuedescr)
+        p1 = getfield_gc_r(p0, descr=nextdescr)
+        setfield_gc(p0, p1, descr=nextdescr)
+        setfield_gc(p0, p1, descr=nextdescr)
+        setfield_gc(p0, p0, descr=nextdescr)
         jump(p0)
         """
         preamble = """
         [p0]
-        p1 = getfield_gc_r(p0, descr=valuedescr)
-        setfield_gc(p0, p0, descr=valuedescr)
-        p4450 = same_as(p0) # Should be killed by backend
+        p1 = getfield_gc_r(p0, descr=nextdescr)
+        setfield_gc(p0, p0, descr=nextdescr)
         jump(p0)
         """
         expected = """
         [p0]
-        setfield_gc(p0, p0, descr=valuedescr)
         jump(p0)
         """
         self.optimize_loop(ops, expected, preamble)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to