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