Author: Maciej Fijalkowski <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit