Author: Hakan Ardo <[email protected]>
Branch: jit-optimizeopt-cleanups
Changeset: r47687:596523ebd60e
Date: 2011-09-29 18:43 +0200
http://bitbucket.org/pypy/pypy/changeset/596523ebd60e/
Log: make OptEarlyForce the place where unroll inserts ops from forcing
boxes at loop boundaries
diff --git a/pypy/jit/metainterp/optimizeopt/earlyforce.py
b/pypy/jit/metainterp/optimizeopt/earlyforce.py
--- a/pypy/jit/metainterp/optimizeopt/earlyforce.py
+++ b/pypy/jit/metainterp/optimizeopt/earlyforce.py
@@ -13,4 +13,7 @@
def new(self):
return OptEarlyForce()
+ def setup(self):
+ self.optimizer.optearlyforce = self
+
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
@@ -338,6 +338,7 @@
self.volatile = {}
self.optimizer = self
self.optpure = None
+ self.optearlyforce = None
if loop is not None:
self.call_pure_results = loop.call_pure_results
diff --git a/pypy/jit/metainterp/optimizeopt/pure.py
b/pypy/jit/metainterp/optimizeopt/pure.py
--- a/pypy/jit/metainterp/optimizeopt/pure.py
+++ b/pypy/jit/metainterp/optimizeopt/pure.py
@@ -6,9 +6,6 @@
self.posponedop = None
def propagate_forward(self, op):
- self.emit_operation(op)
-
- def emit_operation(self, op):
canfold = op.is_always_pure()
if op.is_ovf():
self.posponedop = op
@@ -46,11 +43,11 @@
self.optimizer.remember_emitting_pure(op)
# otherwise, the operation remains
- self.next_optimization.propagate_forward(op)
+ self.emit_operation(op)
if op.returns_bool_result():
self.optimizer.bool_boxes[self.getvalue(op.result)] = None
if nextop:
- self.next_optimization.propagate_forward(nextop)
+ self.emit_operation(nextop)
def flush(self):
assert self.posponedop is None
diff --git a/pypy/jit/metainterp/optimizeopt/virtualstate.py
b/pypy/jit/metainterp/optimizeopt/virtualstate.py
--- a/pypy/jit/metainterp/optimizeopt/virtualstate.py
+++ b/pypy/jit/metainterp/optimizeopt/virtualstate.py
@@ -378,8 +378,8 @@
cpu, extra_guards, renum)
def make_inputargs(self, values, optimizer, keyboxes=False):
- if optimizer.optpure:
- optimizer = optimizer.optpure
+ if optimizer.optearlyforce:
+ optimizer = optimizer.optearlyforce
assert len(values) == len(self.state)
inputargs = [None] * len(self.notvirtuals)
for i in range(len(values)):
@@ -436,8 +436,8 @@
def get_virtual_state(self, jump_args):
self.optimizer.force_at_end_of_preamble()
already_forced = {}
- if self.optimizer.optpure:
- opt = self.optimizer.optpure
+ if self.optimizer.optearlyforce:
+ opt = self.optimizer.optearlyforce
else:
opt = self.optimizer
values = [self.getvalue(box).force_at_end_of_preamble(already_forced,
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit