Author: Carl Friedrich Bolz <cfb...@gmx.de> Branch: optinfo-into-bridges Changeset: r87751:3be195b856e4 Date: 2016-10-13 13:30 +0200 http://bitbucket.org/pypy/pypy/changeset/3be195b856e4/
Log: fix translation and some more problems 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 @@ -85,14 +85,14 @@ """ 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, trace, runtime_boxes, key, call_pure_results=None, + def __init__(self, trace, runtime_boxes, resumestorage=None, call_pure_results=None, enable_opts=None, inline_short_preamble=False): self.trace = trace self.runtime_boxes = runtime_boxes self.call_pure_results = call_pure_results self.enable_opts = enable_opts self.inline_short_preamble = inline_short_preamble - self.resumestorage = key + self.resumestorage = resumestorage def optimize(self, metainterp_sd, jitdriver_sd, optimizations, unroll): from rpython.jit.metainterp.optimizeopt.unroll import UnrollOptimizer @@ -1072,10 +1072,12 @@ if metainterp.history.ends_with_jump: if isinstance(resumekey, ResumeGuardCopiedDescr): key = resumekey.prev + assert isinstance(key, ResumeGuardDescr) elif isinstance(resumekey, ResumeFromInterpDescr): key = None else: key = resumekey + assert isinstance(key, ResumeGuardDescr) data = BridgeCompileData(trace, runtime_boxes, key, call_pure_results=call_pure_results, enable_opts=enable_opts, diff --git a/rpython/jit/metainterp/optimizeopt/bridgeopt.py b/rpython/jit/metainterp/optimizeopt/bridgeopt.py --- a/rpython/jit/metainterp/optimizeopt/bridgeopt.py +++ b/rpython/jit/metainterp/optimizeopt/bridgeopt.py @@ -49,9 +49,10 @@ return box def serialize_optimizer_knowledge(optimizer, numb_state, liveboxes, liveboxes_from_env, memo): - liveboxes_set = set(liveboxes) - if None in liveboxes_set: - liveboxes_set.remove(None) + liveboxes_set = {} + for box in liveboxes: + if box is not None: + liveboxes_set[box] = None metainterp_sd = optimizer.metainterp_sd numb_state.grow(len(liveboxes)) # bit too much @@ -78,8 +79,11 @@ numb_state.grow(len(triples) * 3 + 1) numb_state.append_int(len(triples)) for box1, descr, box2 in triples: + index = metainterp_sd.descrs_dct.get(descr, -1) + if index == -1: + continue # just skip it, if the descr is not encodable numb_state.append_short(tag_box(box1, liveboxes_from_env, memo)) - numb_state.append_int(metainterp_sd.descrs_dct[descr]) + numb_state.append_int(index) numb_state.append_short(tag_box(box2, liveboxes_from_env, memo)) else: numb_state.grow(1) diff --git a/rpython/jit/metainterp/test/test_greenfield.py b/rpython/jit/metainterp/test/test_greenfield.py --- a/rpython/jit/metainterp/test/test_greenfield.py +++ b/rpython/jit/metainterp/test/test_greenfield.py @@ -49,7 +49,7 @@ # res = self.meta_interp(g, [7]) assert res == -22 - self.check_trace_count(6) + self.check_trace_count(4) self.check_resops(guard_value=0) def test_green_field_3(self): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit