Author: Maciej Fijalkowski <fij...@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 _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit