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

Reply via email to