[pypy-commit] pypy jit-optimizeopt-cleanups: make Optimizer.newoperations private and provide access methods
hakanardo
noreply at buildbot.pypy.org
Sun Oct 2 09:48:27 CEST 2011
Author: Hakan Ardo <hakan at debian.org>
Branch: jit-optimizeopt-cleanups
Changeset: r47765:3274372f0d94
Date: 2011-10-02 09:47 +0200
http://bitbucket.org/pypy/pypy/changeset/3274372f0d94/
Log: make Optimizer.newoperations private and provide access methods
diff --git a/pypy/jit/metainterp/optimizeopt/optimizer.py b/pypy/jit/metainterp/optimizeopt/optimizer.py
--- a/pypy/jit/metainterp/optimizeopt/optimizer.py
+++ b/pypy/jit/metainterp/optimizeopt/optimizer.py
@@ -328,7 +328,7 @@
self.quasi_immutable_deps = None
self.opaque_pointers = {}
self.replaces_guard = {}
- self.newoperations = []
+ self._newoperations = []
self.optimizer = self
self.optpure = None
self.optearlyforce = None
@@ -423,6 +423,13 @@
return constbox
return None
+ def get_newoperations(self):
+ self.flush()
+ return self._newoperations
+
+ def clear_newoperations(self):
+ self._newoperations = []
+
def make_equal_to(self, box, value, replace=False):
assert isinstance(value, OptValue)
assert replace or box not in self.values
@@ -471,10 +478,10 @@
def propagate_all_forward(self):
self.exception_might_have_happened = self.bridge
- self.newoperations = []
+ self.clear_newoperations()
for op in self.loop.operations:
self.first_optimization.propagate_forward(op)
- self.loop.operations = self.newoperations
+ self.loop.operations = self.get_newoperations()
self.loop.quasi_immutable_deps = self.quasi_immutable_deps
# accumulate counters
self.resumedata_memo.update_counters(self.metainterp_sd.profiler)
@@ -513,15 +520,15 @@
op = self.store_final_boxes_in_guard(op)
elif op.can_raise():
self.exception_might_have_happened = True
- self.newoperations.append(op)
+ self._newoperations.append(op)
def replace_op(self, old_op, new_op):
# XXX: Do we want to cache indexes to prevent search?
- i = len(self.newoperations)
+ i = len(self._newoperations)
while i > 0:
i -= 1
- if self.newoperations[i] is old_op:
- self.newoperations[i] = new_op
+ if self._newoperations[i] is old_op:
+ self._newoperations[i] = new_op
break
else:
assert False
diff --git a/pypy/jit/metainterp/optimizeopt/unroll.py b/pypy/jit/metainterp/optimizeopt/unroll.py
--- a/pypy/jit/metainterp/optimizeopt/unroll.py
+++ b/pypy/jit/metainterp/optimizeopt/unroll.py
@@ -138,7 +138,7 @@
KillHugeIntBounds(self.optimizer).apply()
- loop.preamble.operations = self.optimizer.newoperations
+ loop.preamble.operations = self.optimizer.get_newoperations()
jump_args = [self.getvalue(a).get_key_box() for a in jump_args]
start_resumedescr = loop.preamble.start_resumedescr.clone_if_mutable()
@@ -182,7 +182,7 @@
# operations needed to setup the proper state of those virtuals
# in the peeled loop
inputarg_setup_ops = []
- preamble_optimizer.newoperations = []
+ preamble_optimizer.clear_newoperations()
seen = {}
for box in inputargs:
if box in seen:
@@ -197,8 +197,7 @@
seen[box] = True
value = preamble_optimizer.getvalue(box)
value.force_box(preamble_optimizer)
- preamble_optimizer.flush()
- inputarg_setup_ops += preamble_optimizer.newoperations
+ inputarg_setup_ops += preamble_optimizer.get_newoperations()
# Setup the state of the new optimizer by emiting the
# short preamble operations and discarding the result
@@ -235,7 +234,7 @@
jmp.setdescr(loop.token)
loop.preamble.operations.append(jmp)
- loop.operations = self.optimizer.newoperations
+ loop.operations = self.optimizer.get_newoperations()
maxguards = self.optimizer.metainterp_sd.warmrunnerdesc.memory_manager.max_retrace_guards
if self.optimizer.emitted_guards > maxguards:
@@ -333,11 +332,11 @@
newop = self.short_inliner.inline_op(op)
self.optimizer.send_extra_operation(newop)
- self.optimizer.flush()
+ newoperations = self.optimizer.get_newoperations()
i = j = 0
- while i < len(self.optimizer.newoperations) or j < len(jumpargs):
- if i == len(self.optimizer.newoperations):
+ while i < len(newoperations) or j < len(jumpargs):
+ if i == len(newoperations):
while j < len(jumpargs):
a = jumpargs[j]
if self.optimizer.loop.logops:
@@ -346,7 +345,7 @@
jumpargs, short_seen)
j += 1
else:
- op = self.optimizer.newoperations[i]
+ op = newoperations[i]
self.boxes_created_this_iteration[op.result] = True
args = op.getarglist()
@@ -361,6 +360,7 @@
self.import_box(a, inputargs, short, short_jumpargs,
jumpargs, short_seen)
i += 1
+ newoperations = self.optimizer.get_newoperations()
jumpop.initarglist(jumpargs)
self.optimizer.send_extra_operation(jumpop)
More information about the pypy-commit
mailing list