[pypy-commit] pypy share-guard-info: kill the feature of removing guards for now, since it seems to be a bit too fragile

fijal noreply at buildbot.pypy.org
Mon Sep 28 09:10:34 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: share-guard-info
Changeset: r79875:18f9fb59e58b
Date: 2015-09-28 09:10 +0200
http://bitbucket.org/pypy/pypy/changeset/18f9fb59e58b/

Log:	kill the feature of removing guards for now, since it seems to be a
	bit too fragile

diff --git a/rpython/jit/metainterp/optimizeopt/heap.py b/rpython/jit/metainterp/optimizeopt/heap.py
--- a/rpython/jit/metainterp/optimizeopt/heap.py
+++ b/rpython/jit/metainterp/optimizeopt/heap.py
@@ -288,29 +288,7 @@
             cf = submap[index] = ArrayCachedField(index)
         return cf
 
-    def emit_operation(self, op):
-        if op.is_guard():
-            assert isinstance(op, GuardResOp)
-            origin_jitcode = self.optimizer.origin_jitcode
-            origin_pc = self.optimizer.origin_pc
-            if origin_jitcode is not None:
-                if (origin_jitcode is op.rd_frame_info_list.jitcode and
-                    origin_pc == op.rd_frame_info_list.pc):
-                    self.optimizer.origin_jitcode = None
-                    self.optimizer.origin_pc = 0
-                elif op.getopnum() == rop.GUARD_NO_OVERFLOW:
-                    if self.postponed_op:
-                        # XXX is this always the case?
-                        assert self.postponed_op.is_ovf()
-                        newop = self.optimizer.replace_op_with_no_ovf(
-                            self.postponed_op)
-                        self.postponed_op = newop
-                    else:
-                        self.optimizer.potentially_change_ovf_op_to_no_ovf(op)
-                    return # we optimize the guard
-                elif op.getopnum() != rop.GUARD_OVERFLOW:
-                    return
-        
+    def emit_operation(self, op):        
         self.emitting_operation(op)
         self.emit_postponed_op()
         if (op.is_comparison() or op.is_call_may_force()
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
@@ -504,10 +504,6 @@
     def propagate_all_forward(self, inputargs, ops, call_pure_results=None,
                               rename_inputargs=True, flush=True,
                               origin_jitcode=None, origin_pc=0):
-        #if origin_jitcode is not None:
-        #    debug_print("looking for guard at %s %d" % (origin_jitcode.name, origin_pc))
-        self.origin_jitcode = None # origin_jitcode
-        self.origin_pc = origin_pc
         if rename_inputargs:
             newargs = []
             for inparg in inputargs:
@@ -533,9 +529,6 @@
         if extra_jump:
             self.first_optimization.propagate_forward(ops[-1])
         self.resumedata_memo.update_counters(self.metainterp_sd.profiler)
-
-        if self.origin_jitcode is not None:
-            raise Exception("Was looking for guard never foudnd it")
         
         return (BasicLoopInfo(newargs, self.quasi_immutable_deps),
                 self._newoperations)
diff --git a/rpython/jit/metainterp/pyjitpl.py b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -2473,10 +2473,6 @@
 
     def prepare_resume_from_failure(self, deadframe, resumedescr):
         exception = self.cpu.grab_exc_value(deadframe)
-        if isinstance(resumedescr, compile.ResumeGuardDescr):
-            name = resumedescr.rd_frame_info_list.jitcode.name
-            pc = resumedescr.rd_frame_info_list.pc
-            #debug_print("resuming at %d %s %d" % (name, pc, compute_unique_id(resumedescr)))
         if isinstance(resumedescr, compile.ResumeGuardExcDescr):
             if exception:
                 self.execute_ll_raised(lltype.cast_opaque_ptr(rclass.OBJECTPTR,
diff --git a/rpython/jit/metainterp/test/test_loop.py b/rpython/jit/metainterp/test/test_loop.py
--- a/rpython/jit/metainterp/test/test_loop.py
+++ b/rpython/jit/metainterp/test/test_loop.py
@@ -1089,9 +1089,9 @@
 
         self.meta_interp(f, [30])
         self.check_trace_count(3)
-<<<<<<< local
 
     def test_sharing_guards(self):
+        py.test.skip("unimplemented")
         driver = JitDriver(greens = [], reds = 'auto')
         
         def f(i):
@@ -1108,8 +1108,6 @@
         self.meta_interp(f, [15])
         # one guard_false got removed
         self.check_resops(guard_false=4, guard_true=5)
-=======
->>>>>>> other
 
 class TestLLtype(LoopTest, LLJitMixin):
     pass


More information about the pypy-commit mailing list