[pypy-commit] pypy optresult: a test, explanation and update TODO
fijal
noreply at buildbot.pypy.org
Fri Jun 5 09:36:08 CEST 2015
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult
Changeset: r77880:93f24053fbe7
Date: 2015-06-05 09:35 +0200
http://bitbucket.org/pypy/pypy/changeset/93f24053fbe7/
Log: a test, explanation and update TODO
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,5 +1,3 @@
-* certain cases where VirtualArray or VirtualStructArray is forced (but
- heap.py is not notified about fields being dirty)
* 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)
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
@@ -374,7 +374,8 @@
[op, ConstInt(index), subbox],
descr=flddescr)
optforce._emit_operation(setfieldop)
- # XXX optforce.optheap
+ # heapcache does not work for interiorfields
+ # if it does, we would need a fix here
i += 1
def visitor_walk_recursive(self, instbox, visitor, optimizer):
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -5571,5 +5571,18 @@
"""
self.optimize_loop(ops, ops)
+ def test_dirty_array_of_structs_field_after_force(self):
+ ops = """
+ []
+ p0 = new_array_clear(1, descr=complexarraydescr)
+ setinteriorfield_gc(p0, 0, 0.0, descr=complexrealdescr)
+ setinteriorfield_gc(p0, 0, 0.0, descr=compleximagdescr)
+ escape_n(p0) # force
+ call_may_force_n(1, descr=mayforcevirtdescr)
+ f1 = getinteriorfield_gc_f(p0, 0, descr=compleximagdescr)
+ finish(f1)
+ """
+ self.optimize_loop(ops, ops)
+
class TestLLtype(BaseTestOptimizeBasic, LLtypeMixin):
pass
More information about the pypy-commit
mailing list