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

Reply via email to