Author: Carl Friedrich Bolz <cfb...@gmx.de> Branch: improve-heap-caching-tracing Changeset: r47136:f7596aea7542 Date: 2011-09-07 11:35 +0200 http://bitbucket.org/pypy/pypy/changeset/f7596aea7542/
Log: fix XXX: also record newness of non-vtable memory add a new one XXX diff --git a/pypy/jit/metainterp/pyjitpl.py b/pypy/jit/metainterp/pyjitpl.py --- a/pypy/jit/metainterp/pyjitpl.py +++ b/pypy/jit/metainterp/pyjitpl.py @@ -367,8 +367,9 @@ @arguments("descr") def opimpl_new(self, sizedescr): - # XXX heapcache.new - return self.execute_with_descr(rop.NEW, sizedescr) + resbox = self.execute_with_descr(rop.NEW, sizedescr) + self.metainterp.heapcache.new(resbox) + return resbox @arguments("descr") def opimpl_new_with_vtable(self, sizedescr): @@ -544,6 +545,7 @@ if tobox is not None: return tobox resbox = self.execute_with_descr(opnum, fielddescr, box) + # XXX getfield_now_known self.metainterp.heapcache.setfield(box, fielddescr, resbox) return resbox diff --git a/pypy/jit/metainterp/test/test_tracingopts.py b/pypy/jit/metainterp/test/test_tracingopts.py --- a/pypy/jit/metainterp/test/test_tracingopts.py +++ b/pypy/jit/metainterp/test/test_tracingopts.py @@ -450,6 +450,26 @@ assert res == 2 * -7 + 2 * -8 self.check_operations_history(getfield_gc=0) + def test_heap_caching_multiple_tuples(self): + class Gbl(object): + pass + g = Gbl() + def gn(a1, a2): + return a1[0] + a2[0] + def fn(n): + a1 = (n, ) + g.a = a1 + a2 = (n - 1, ) + g.a = a2 + jit.promote(n) + return a1[0] + a2[0] + gn(a1, a2) + res = self.interp_operations(fn, [7]) + assert res == 2 * 7 + 2 * 6 + self.check_operations_history(getfield_gc_pure=0) + res = self.interp_operations(fn, [-7]) + assert res == 2 * -7 + 2 * -8 + self.check_operations_history(getfield_gc_pure=0) + def test_heap_caching_multiple_arrays(self): class Gbl(object): pass _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit