Author: Maciej Fijalkowski <[email protected]>
Branch: optresult-unroll
Changeset: r79278:9217bd619818
Date: 2015-08-28 15:17 +0200
http://bitbucket.org/pypy/pypy/changeset/9217bd619818/

Log:    dance around a bit

diff --git a/rpython/jit/metainterp/optimizeopt/info.py 
b/rpython/jit/metainterp/optimizeopt/info.py
--- a/rpython/jit/metainterp/optimizeopt/info.py
+++ b/rpython/jit/metainterp/optimizeopt/info.py
@@ -560,7 +560,7 @@
                     setfieldop = ResOperation(rop.SETINTERIORFIELD_GC,
                                               [op, ConstInt(index), subbox],
                                               descr=flddescr)
-                    optforce._emit_operation(setfieldop)
+                    optforce.emit_operation(setfieldop)
                     # heapcache does not work for interiorfields
                     # if it does, we would need a fix here
                 i += 1
diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py 
b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -303,7 +303,8 @@
             info = self.getptrinfo(box)
             if info is not None and info.is_virtual():
                 rec = {}
-                return info.force_at_the_end_of_preamble(box, self, rec)
+                return info.force_at_the_end_of_preamble(box,
+                                                self.optearlyforce, rec)
             return box
         return box
 
@@ -490,7 +491,7 @@
             return CONST_0
 
     def propagate_all_forward(self, inputargs, ops, call_pure_results=None,
-                              rename_inputargs=True):
+                              rename_inputargs=True, flush=True):
         if rename_inputargs:
             newargs = []
             for inparg in inputargs:
@@ -513,7 +514,8 @@
         #self.loop.operations = self.get_newoperations()
         #self.loop.quasi_immutable_deps = self.quasi_immutable_deps
         # accumulate counters
-        self.flush()
+        if flush:
+            self.flush()
         if extra_jump:
             self.first_optimization.propagate_forward(ops[-1])
         self.resumedata_memo.update_counters(self.metainterp_sd.profiler)
diff --git a/rpython/jit/metainterp/optimizeopt/unroll.py 
b/rpython/jit/metainterp/optimizeopt/unroll.py
--- a/rpython/jit/metainterp/optimizeopt/unroll.py
+++ b/rpython/jit/metainterp/optimizeopt/unroll.py
@@ -102,7 +102,8 @@
     def optimize_preamble(self, start_label, end_label, ops, 
call_pure_results):
         self._check_no_forwarding([[start_label, end_label], ops])
         info, newops = self.optimizer.propagate_all_forward(
-            start_label.getarglist()[:], ops, call_pure_results, True)
+            start_label.getarglist()[:], ops, call_pure_results, True,
+            flush=False)
         exported_state = self.export_state(start_label, end_label.getarglist(),
                                            info.inputargs)
         # we need to absolutely make sure that we've cleaned up all
@@ -117,7 +118,8 @@
         self.potential_extra_ops = {}
         self.optimizer.init_inparg_dict_from(label_args)
         info, _ = self.optimizer.propagate_all_forward(
-            start_label.getarglist()[:], ops, call_pure_results, False)
+            start_label.getarglist()[:], ops, call_pure_results, False,
+            flush=False)
         label_op = ResOperation(rop.LABEL, label_args, start_label.getdescr())
         target_token = self.finalize_short_preamble(label_op,
                                                     state.virtual_state)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to