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