Author: fijal
Branch: jit-leaner-frontend
Changeset: r82872:87305d3006b1
Date: 2016-03-07 22:10 +0200
http://bitbucket.org/pypy/pypy/changeset/87305d3006b1/

Log:    one more commit of progress

diff --git a/rpython/jit/metainterp/opencoder.py 
b/rpython/jit/metainterp/opencoder.py
--- a/rpython/jit/metainterp/opencoder.py
+++ b/rpython/jit/metainterp/opencoder.py
@@ -26,7 +26,7 @@
         self.save_pos = -1
 
     def length(self):
-        return self.end - self.start - 1
+        return self.end - self.start
 
     def done(self):
         return self.pos >= self.end
diff --git a/rpython/jit/metainterp/pyjitpl.py 
b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -2609,7 +2609,10 @@
         self.history.record(rop.JUMP, live_arg_boxes[num_green_args:], None,
                             descr=target_jitcell_token)
         self.history.ends_with_jump = True
-        target_token = compile.compile_trace(self, self.resumekey)
+        try:
+            target_token = compile.compile_trace(self, self.resumekey)
+        finally:
+            xxxx
         if target_token is not None: # raise if it *worked* correctly
             assert isinstance(target_token, TargetToken)
             jitcell_token = target_token.targeting_jitcell_token
diff --git a/rpython/jit/metainterp/resume.py b/rpython/jit/metainterp/resume.py
--- a/rpython/jit/metainterp/resume.py
+++ b/rpython/jit/metainterp/resume.py
@@ -317,13 +317,15 @@
         #self._number_boxes(topsnapshot.boxes, optimizer, state)
         #assert state.position == special_boxes_size
 
+        total = 2
         while not snapshot_iter.done():
             size, jitcode_index, pc = snapshot_iter.get_size_jitcode_pc()
+            total += 2 + size
             state.append(rffi.cast(rffi.SHORT, jitcode_index))
             state.append(rffi.cast(rffi.SHORT, pc))
             self._number_boxes(snapshot_iter, size, optimizer, state)
 
-        numb = resumecode.create_numbering(state.current)
+        numb = resumecode.create_numbering(state.current, total)
         return numb, state.liveboxes, state.v
         
     def forget_numberings(self):
diff --git a/rpython/jit/metainterp/resumecode.py 
b/rpython/jit/metainterp/resumecode.py
--- a/rpython/jit/metainterp/resumecode.py
+++ b/rpython/jit/metainterp/resumecode.py
@@ -24,9 +24,12 @@
 NUMBERINGP.TO.become(NUMBERING)
 NULL_NUMBER = lltype.nullptr(NUMBERING)
 
-def create_numbering(lst):
+def create_numbering(lst, total=-1):
+    if total == -1:
+        total = len(lst)
     result = []
-    for item in lst:
+    for i in range(total):
+        item = lst[i]
         item = rffi.cast(lltype.Signed, item)
         item *= 2
         if item < 0:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to