[pypy-commit] pypy optresult-unroll: we don't need to force short preamble just by doing setfield
fijal
noreply at buildbot.pypy.org
Tue Sep 1 21:14:31 CEST 2015
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult-unroll
Changeset: r79363:b36276bbef65
Date: 2015-09-01 20:30 +0200
http://bitbucket.org/pypy/pypy/changeset/b36276bbef65/
Log: we don't need to force short preamble just by doing setfield
diff --git a/rpython/jit/metainterp/optimizeopt/heap.py b/rpython/jit/metainterp/optimizeopt/heap.py
--- a/rpython/jit/metainterp/optimizeopt/heap.py
+++ b/rpython/jit/metainterp/optimizeopt/heap.py
@@ -76,7 +76,7 @@
if self.possible_aliasing(optheap, structinfo):
self.force_lazy_setfield(optheap, op.getdescr())
assert not self.possible_aliasing(optheap, structinfo)
- cached_field = self._getfield(structinfo, op.getdescr(), optheap)
+ cached_field = self._getfield(structinfo, op.getdescr(), optheap, False)
if cached_field is not None:
cached_field = optheap.get_box_replacement(cached_field)
@@ -118,9 +118,11 @@
def _getvalue(self, op):
return op.getarg(1)
- def _getfield(self, opinfo, descr, optheap):
+ def _getfield(self, opinfo, descr, optheap, true_force=True):
res = opinfo.getfield(descr, optheap)
if isinstance(res, PreambleOp):
+ if not true_force:
+ return res.op
res = optheap.optimizer.force_op_from_preamble(res)
opinfo.setfield(descr, None, res, optheap)
return res
@@ -163,9 +165,11 @@
def _getvalue(self, op):
return op.getarg(2)
- def _getfield(self, opinfo, descr, optheap):
+ def _getfield(self, opinfo, descr, optheap, true_force=True):
res = opinfo.getitem(descr, self.index, optheap)
if isinstance(res, PreambleOp):
+ if not true_force:
+ return res.op
index = res.preamble_op.getarg(1).getint()
res = optheap.optimizer.force_op_from_preamble(res)
opinfo.setitem(descr, index, None, res, optheap=optheap)
More information about the pypy-commit
mailing list