Author: Maciej Fijalkowski <fij...@gmail.com>
Branch: share-guard-info
Changeset: r79876:0dcb16c2195c
Date: 2015-09-28 09:13 +0200
http://bitbucket.org/pypy/pypy/changeset/0dcb16c2195c/

Log:    kill it for good and reenable replacements of guards

diff --git a/rpython/jit/metainterp/compile.py 
b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -68,13 +68,11 @@
     the label
     """
     def __init__(self, start_label, operations, call_pure_results=None,
-                 enable_opts=None, origin_jitcode=None, origin_pc=0):
+                 enable_opts=None):
         self.start_label = start_label
         self.operations = operations
         self.call_pure_results = call_pure_results
         self.enable_opts = enable_opts
-        self.origin_jitcode = origin_jitcode
-        self.origin_pc = origin_pc
 
     def optimize(self, metainterp_sd, jitdriver_sd, optimizations, unroll):
         from rpython.jit.metainterp.optimizeopt.optimizer import Optimizer
@@ -82,23 +80,19 @@
         #assert not unroll
         opt = Optimizer(metainterp_sd, jitdriver_sd, optimizations)
         return opt.propagate_all_forward(self.start_label.getarglist(),
-            self.operations, self.call_pure_results,
-            origin_jitcode=self.origin_jitcode, origin_pc=self.origin_pc)
+            self.operations, self.call_pure_results)
 
 class BridgeCompileData(CompileData):
     """ This represents ops() with a jump at the end that goes to some
     loop, we need to deal with virtual state and inlining of short preamble
     """
     def __init__(self, start_label, operations, call_pure_results=None,
-                 enable_opts=None, inline_short_preamble=False,
-                 origin_jitcode=None, origin_pc=0):
+                 enable_opts=None, inline_short_preamble=False):
         self.start_label = start_label
         self.operations = operations
         self.call_pure_results = call_pure_results
         self.enable_opts = enable_opts
         self.inline_short_preamble = inline_short_preamble
-        self.origin_jitcode = origin_jitcode
-        self.origin_pc = origin_pc
 
     def optimize(self, metainterp_sd, jitdriver_sd, optimizations, unroll):
         from rpython.jit.metainterp.optimizeopt.unroll import UnrollOptimizer
@@ -107,8 +101,7 @@
         return opt.optimize_bridge(self.start_label, self.operations,
                                    self.call_pure_results,
                                    self.inline_short_preamble,
-                                   self.box_names_memo,
-                                   self.origin_jitcode, self.origin_pc)
+                                   self.box_names_memo)
 
 class UnrolledLoopData(CompileData):
     """ This represents label() ops jump with extra info that's from the
@@ -682,13 +675,10 @@
 
 class ResumeGuardDescr(ResumeDescr):
     _attrs_ = ('rd_numb', 'rd_count', 'rd_consts', 'rd_virtuals',
-               'rd_frame_info_list', 'rd_pendingfields', 'status',
-               'rd_origin_jitcode', 'rd_origin_pc')
+               'rd_frame_info_list', 'rd_pendingfields', 'status')
     
     rd_numb = lltype.nullptr(NUMBERING)
     rd_count = 0
-    rd_origin_pc = 0
-    rd_origin_jitcode = None
     rd_consts = None
     rd_virtuals = None
     rd_frame_info_list = None
@@ -696,9 +686,6 @@
 
     status = r_uint(0)
 
-    def get_origin_data(self):
-        return self.rd_origin_jitcode, self.rd_origin_pc
-
     def copy_all_attributes_from(self, other):
         assert isinstance(other, ResumeGuardDescr)
         self.rd_count = other.rd_count
@@ -943,9 +930,6 @@
     def __init__(self, original_greenkey):
         self.original_greenkey = original_greenkey
 
-    def get_origin_data(self):
-        return None, 0
-
     def compile_and_attach(self, metainterp, new_loop, orig_inputargs):
         # We managed to create a bridge going from the interpreter
         # to previously-compiled code.  We keep 'new_loop', which is not
@@ -991,20 +975,15 @@
 
     call_pure_results = metainterp.call_pure_results
 
-    origin_jitcode, origin_pc = resumekey.get_origin_data()
     if operations[-1].getopnum() == rop.JUMP:
         data = BridgeCompileData(label, operations[:],
                                  call_pure_results=call_pure_results,
                                  enable_opts=enable_opts,
-                                 inline_short_preamble=inline_short_preamble,
-                                 origin_jitcode=origin_jitcode,
-                                 origin_pc=origin_pc)
+                                 inline_short_preamble=inline_short_preamble)
     else:
         data = SimpleCompileData(label, operations[:],
                                  call_pure_results=call_pure_results,
-                                 enable_opts=enable_opts,
-                                 origin_jitcode=origin_jitcode,
-                                 origin_pc=origin_pc)
+                                 enable_opts=enable_opts)
     try:
         info, newops = optimize_trace(metainterp_sd, jitdriver_sd,
                                       data, metainterp.box_names_memo)
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
@@ -502,8 +502,7 @@
             return CONST_0
 
     def propagate_all_forward(self, inputargs, ops, call_pure_results=None,
-                              rename_inputargs=True, flush=True,
-                              origin_jitcode=None, origin_pc=0):
+                              rename_inputargs=True, flush=True):
         if rename_inputargs:
             newargs = []
             for inparg in inputargs:
@@ -648,8 +647,6 @@
         descr.store_final_boxes(guard_op, last_guard_op.getfailargs(),
                                 self.metainterp_sd)
         assert isinstance(guard_op, GuardResOp)
-        descr.rd_origin_jitcode = guard_op.rd_frame_info_list.jitcode
-        descr.rd_origin_pc = guard_op.rd_frame_info_list.pc
         if guard_op.getopnum() == rop.GUARD_VALUE:
             guard_op = self._maybe_replace_guard_value(guard_op, descr)
         return guard_op
diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py 
b/rpython/jit/metainterp/optimizeopt/rewrite.py
--- a/rpython/jit/metainterp/optimizeopt/rewrite.py
+++ b/rpython/jit/metainterp/optimizeopt/rewrite.py
@@ -380,10 +380,8 @@
                     raise InvalidLoop("promote of a virtual")
                 old_guard_op = info.get_last_guard(self.optimizer)
                 if old_guard_op is not None:
-                    pass
-                    # disable it for now because of sharing
-                    #op = self.replace_guard_class_with_guard_value(op, info,
-                    #                                          old_guard_op)
+                    op = self.replace_guard_class_with_guard_value(op, info,
+                                                              old_guard_op)
         elif arg0.type == 'f':
             arg0 = self.get_box_replacement(arg0)
             if arg0.is_constant():
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
@@ -223,14 +223,12 @@
         return label_vs
 
     def optimize_bridge(self, start_label, operations, call_pure_results,
-                        inline_short_preamble, box_names_memo,
-                        origin_jitcode=None, origin_pc=0):
+                        inline_short_preamble, box_names_memo):
         self._check_no_forwarding([start_label.getarglist(),
                                     operations])
         info, ops = self.optimizer.propagate_all_forward(
             start_label.getarglist()[:], operations[:-1],
-            call_pure_results, True, origin_jitcode=origin_jitcode,
-            origin_pc=origin_pc)
+            call_pure_results, True)
         jump_op = operations[-1]
         cell_token = jump_op.getdescr()
         assert isinstance(cell_token, JitCellToken)
diff --git a/rpython/jit/metainterp/test/test_ajit.py 
b/rpython/jit/metainterp/test/test_ajit.py
--- a/rpython/jit/metainterp/test/test_ajit.py
+++ b/rpython/jit/metainterp/test/test_ajit.py
@@ -1479,7 +1479,7 @@
             return x
         res = self.meta_interp(f, [299], listops=True)
         assert res == f(299)
-        self.check_resops(guard_class=4, guard_value=6)
+        self.check_resops(guard_class=6, guard_value=6)
 
     def test_merge_guardnonnull_guardclass(self):
         myjitdriver = JitDriver(greens = [], reds = ['x', 'l'])
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to