Author: Hakan Ardo <[email protected]>
Branch: jit-short_from_state
Changeset: r46420:daec1c343585
Date: 2011-08-10 16:16 +0200
http://bitbucket.org/pypy/pypy/changeset/daec1c343585/
Log: cleared out obsolete code for reconstructing the optimization chain
after the preamble
diff --git a/pypy/jit/metainterp/optimizeopt/fficall.py
b/pypy/jit/metainterp/optimizeopt/fficall.py
--- a/pypy/jit/metainterp/optimizeopt/fficall.py
+++ b/pypy/jit/metainterp/optimizeopt/fficall.py
@@ -77,11 +77,6 @@
def new(self):
return OptFfiCall()
- def reconstruct_for_next_iteration(self, short_boxes, surviving_boxes,
- optimizer, valuemap):
- return OptFfiCall()
- # FIXME: Should any status be saved for next iteration?
-
def begin_optimization(self, funcval, op):
self.rollback_maybe('begin_optimization', op)
self.funcinfo = FuncInfo(funcval, self.optimizer.cpu, op)
diff --git a/pypy/jit/metainterp/optimizeopt/heap.py
b/pypy/jit/metainterp/optimizeopt/heap.py
--- a/pypy/jit/metainterp/optimizeopt/heap.py
+++ b/pypy/jit/metainterp/optimizeopt/heap.py
@@ -114,17 +114,6 @@
if self._cached_fields[structvalue] is value:
self._cached_fields[structvalue] = newvalue
- def get_cloned(self, optimizer, valuemap, short_boxes):
- assert self._lazy_setfield is None
- cf = CachedField()
- for structvalue, fieldvalue in self._cached_fields.iteritems():
- op = self._cached_fields_getfield_op.get(structvalue, None)
- if op and op.result in short_boxes and short_boxes[op.result] is
op:
- structvalue2 = structvalue.get_cloned(optimizer, valuemap)
- fieldvalue2 = fieldvalue .get_cloned(optimizer, valuemap)
- cf._cached_fields[structvalue2] = fieldvalue2
- return cf
-
def produce_potential_short_preamble_ops(self, optimizer, shortboxes,
descr):
if self._lazy_setfield is not None:
return
@@ -175,21 +164,6 @@
def new(self):
return OptHeap()
- def reconstruct_for_next_iteration(self, short_boxes, surviving_boxes,
- optimizer, valuemap):
- new = OptHeap()
-
- for descr, d in self.cached_fields.items():
- new.cached_fields[descr] = d.get_cloned(optimizer, valuemap,
short_boxes)
-
- for descr, submap in self.cached_arrayitems.items():
- newdict = {}
- for index, d in submap.items():
- newdict[index] = d.get_cloned(optimizer, valuemap, short_boxes)
- new.cached_arrayitems[descr] = newdict
-
- return new
-
def produce_potential_short_preamble_ops(self, sb):
for descr, d in self.cached_fields.items():
d.produce_potential_short_preamble_ops(self.optimizer, sb, descr)
diff --git a/pypy/jit/metainterp/optimizeopt/intbounds.py
b/pypy/jit/metainterp/optimizeopt/intbounds.py
--- a/pypy/jit/metainterp/optimizeopt/intbounds.py
+++ b/pypy/jit/metainterp/optimizeopt/intbounds.py
@@ -19,11 +19,6 @@
assert self.posponedop is None
return OptIntBounds()
- def reconstruct_for_next_iteration(self, short_boxes, surviving_boxes,
optimizer,
- valuemap):
- assert self.posponedop is None
- return OptIntBounds()
-
def flush(self):
assert self.posponedop is None
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
@@ -100,32 +100,6 @@
def force_at_end_of_preamble(self, already_forced):
return self
- def get_cloned(self, optimizer, valuemap, force_if_needed=True):
- if self in valuemap:
- return valuemap[self]
- new = self.clone_for_next_iteration(optimizer)
- if new is None:
- if force_if_needed:
- # It is too late to force things here it must have been
- # done already in force_at_end_of_preamble()
- assert self.box
- new = OptValue(self.box)
- else:
- return None
- else:
- assert new.__class__ is self.__class__
- assert new.is_virtual() == self.is_virtual()
- valuemap[self] = new
- self.clone_childs(new, valuemap)
- return new
-
- def clone_for_next_iteration(self, optimizer):
- return OptValue(self.box, self.level, self.known_class,
- self.intbound.clone())
-
- def clone_childs(self, new, valuemap):
- pass
-
def get_args_for_fail(self, modifier):
pass
@@ -226,9 +200,6 @@
def __init__(self, box):
self.make_constant(box)
- def clone_for_next_iteration(self, optimizer):
- return self
-
CONST_0 = ConstInt(0)
CONST_1 = ConstInt(1)
CVAL_ZERO = ConstantValue(CONST_0)
@@ -318,10 +289,6 @@
def new(self):
raise NotImplementedError
- def reconstruct_for_next_iteration(self, short_boxes, surviving_boxes=None,
- optimizer=None, valuemap=None):
- raise NotImplementedError
-
# Called after last operation has been propagated to flush out any
posponed ops
def flush(self):
pass
@@ -387,59 +354,6 @@
new.quasi_immutable_deps = self.quasi_immutable_deps
return new
- def reconstruct_for_next_iteration(self, short_boxes, surviving_boxes=None,
- optimizer=None, valuemap=None):
- assert optimizer is None
- assert valuemap is None
- if surviving_boxes is None:
- surviving_boxes = []
-
- for box in surviving_boxes:
- if box not in short_boxes:
- short_boxes[box] = None
-
- valuemap = {}
- new = Optimizer(self.metainterp_sd, self.loop)
- optimizations = [o.reconstruct_for_next_iteration(short_boxes,
- surviving_boxes,
- new, valuemap)
- for o in self.optimizations]
- new.set_optimizations(optimizations)
-
- for ref, box in self.interned_refs.items():
- value = self.getvalue(box)
- assert value.is_constant()
- new.interned_refs[ref] = box
- new.values[box] = value.get_cloned(new, valuemap)
-
- new.pure_operations = args_dict()
- for key, op in self.pure_operations.items():
- if op.result in short_boxes and short_boxes[op.result] is op:
- new.pure_operations[key] = op
- new.producer = self.producer
- assert self.posponedop is None
- new.quasi_immutable_deps = self.quasi_immutable_deps
-
- for box in short_boxes:
- box = new.getinterned(box)
- value = self.getvalue(box)
- bool_box = value in self.bool_boxes
- force = box in surviving_boxes
- value = value.get_cloned(new, valuemap,
- force_if_needed=force)
- if value is not None:
- new.values[box] = value
- if bool_box:
- new.bool_boxes[value] = None
-
- for value in valuemap.values():
- box = value.get_key_box()
- box = new.getinterned(box)
- if box not in new.values:
- new.values[box] = value
-
- return new
-
def produce_potential_short_preamble_ops(self, sb):
for op in self.emitted_pure_operations:
if op.getopnum() == rop.GETARRAYITEM_GC_PURE or \
diff --git a/pypy/jit/metainterp/optimizeopt/rewrite.py
b/pypy/jit/metainterp/optimizeopt/rewrite.py
--- a/pypy/jit/metainterp/optimizeopt/rewrite.py
+++ b/pypy/jit/metainterp/optimizeopt/rewrite.py
@@ -20,14 +20,6 @@
def new(self):
return OptRewrite()
- def reconstruct_for_next_iteration(self, short_boxes, surviving_boxes,
- optimizer, valuemap):
- new = OptRewrite()
- for key, value in self.loop_invariant_results.items():
- new.loop_invariant_results[key] = \
- value.get_cloned(new, valuemap)
- return new
-
def produce_potential_short_preamble_ops(self, sb):
for op in self.loop_invariant_producer.values():
sb.add_potential(op)
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
@@ -748,10 +748,6 @@
def new(self):
return OptInlineShortPreamble(self.retraced)
- def reconstruct_for_next_iteration(self, short_boxes, surviving_boxes,
- optimizer, valuemap):
- return OptInlineShortPreamble(self.retraced)
-
def propagate_forward(self, op):
if op.getopnum() == rop.JUMP:
loop_token = op.getdescr()
diff --git a/pypy/jit/metainterp/optimizeopt/virtualize.py
b/pypy/jit/metainterp/optimizeopt/virtualize.py
--- a/pypy/jit/metainterp/optimizeopt/virtualize.py
+++ b/pypy/jit/metainterp/optimizeopt/virtualize.py
@@ -58,9 +58,6 @@
def _really_force(self):
raise NotImplementedError("abstract base")
- def clone_for_next_iteration(self, _optimizer):
- return None
-
def get_fielddescrlist_cache(cpu):
if not hasattr(cpu, '_optimizeopt_fielddescrlist_cache'):
result = descrlist_dict()
@@ -177,17 +174,6 @@
fieldvalue = self._fields[ofs]
fieldvalue.get_args_for_fail(modifier)
- def clone_for_next_iteration(self, optimizer):
- raise NotImplementedError
-
- def clone_childs(self, new, valuemap):
- assert isinstance(new, AbstractVirtualStructValue)
- if new.box is None:
- lst = self._get_field_descr_list()
- for ofs in lst:
- new._fields[ofs] = \
- self._fields[ofs].get_cloned(new.optimizer, valuemap)
-
class VirtualValue(AbstractVirtualStructValue):
level = optimizer.LEVEL_KNOWNCLASS
@@ -210,12 +196,6 @@
field_names = [field.name for field in self._fields]
return "<VirtualValue cls=%s fields=%s>" % (cls_name, field_names)
- def clone_for_next_iteration(self, optimizer):
- new = VirtualValue(optimizer, self.known_class, self.keybox,
- self.source_op)
- new.box = self.box
- return new
-
class VStructValue(AbstractVirtualStructValue):
def __init__(self, optimizer, structdescr, keybox, source_op=None):
@@ -226,12 +206,6 @@
fielddescrs = self._get_field_descr_list()
return modifier.make_vstruct(self.structdescr, fielddescrs)
- def clone_for_next_iteration(self, optimizer):
- new = VStructValue(optimizer, self.structdescr, self.keybox,
- self.source_op)
- new.box = self.box
- return new
-
def _get_descr(self):
return self.structdescr
@@ -295,29 +269,12 @@
def _make_virtual(self, modifier):
return modifier.make_varray(self.arraydescr)
- def clone_for_next_iteration(self, optimizer):
- new = VArrayValue(optimizer, self.arraydescr, len(self._items),
- self.keybox, self.source_op)
- new.box = self.box
- return new
-
- def clone_childs(self, new, valuemap):
- assert isinstance(new, VArrayValue)
- if new.box is None:
- for i in range(len(self._items)):
- new._items[i] = self._items[i].get_cloned(new.optimizer,
- valuemap)
-
class OptVirtualize(optimizer.Optimization):
"Virtualize objects until they escape."
def new(self):
return OptVirtualize()
- def reconstruct_for_next_iteration(self, short_boxes, surviving_boxes,
- optimizer, valuemap):
- return OptVirtualize()
-
def make_virtual(self, known_class, box, source_op=None):
vvalue = VirtualValue(self.optimizer, known_class, box, source_op)
self.make_equal_to(box, vvalue)
diff --git a/pypy/jit/metainterp/optimizeopt/vstring.py
b/pypy/jit/metainterp/optimizeopt/vstring.py
--- a/pypy/jit/metainterp/optimizeopt/vstring.py
+++ b/pypy/jit/metainterp/optimizeopt/vstring.py
@@ -366,10 +366,6 @@
def new(self):
return OptString()
- def reconstruct_for_next_iteration(self, short_boxes, surviving_boxes,
- optimizer, valuemap):
- return OptString()
-
def make_vstring_plain(self, box, source_op, mode):
vvalue = VStringPlainValue(self.optimizer, box, source_op, mode)
self.make_equal_to(box, vvalue)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit