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