[pypy-commit] pypy jitframe-on-heap: Fix translation for no-jit cases

arigo noreply at buildbot.pypy.org
Sun Feb 24 18:56:22 CET 2013


Author: Armin Rigo <arigo at tunes.org>
Branch: jitframe-on-heap
Changeset: r61737:434115dab59e
Date: 2013-02-24 18:51 +0100
http://bitbucket.org/pypy/pypy/changeset/434115dab59e/

Log:	Fix translation for no-jit cases

diff --git a/rpython/memory/gctransform/asmgcroot.py b/rpython/memory/gctransform/asmgcroot.py
--- a/rpython/memory/gctransform/asmgcroot.py
+++ b/rpython/memory/gctransform/asmgcroot.py
@@ -557,6 +557,7 @@
             pos = ~ pos     # can ignore this "range" marker here
         gccallshapes = llop.gc_asmgcroot_static(llmemory.Address, 2)
         self.addr = gccallshapes + pos
+        self.jit_index = -1
 
     def setjitframe(self, extra_stack_depth):
         self.addr = llmemory.NULL
@@ -564,9 +565,10 @@
         self.extra_stack_depth = extra_stack_depth
 
     def next(self):
-        addr = self.addr
-        if addr:
+        index = self.jit_index
+        if index < 0:
             # case "outside the jit"
+            addr = self.addr
             value = 0
             while True:
                 b = ord(addr.char[0])
@@ -581,7 +583,6 @@
             # case "in the jit"
             from rpython.jit.backend.x86.arch import FRAME_FIXED_SIZE
             from rpython.jit.backend.x86.arch import PASS_ON_MY_FRAME
-            index = self.jit_index
             self.jit_index = index + 1
             if index == 0:
                 # the jitframe is an object in EBP


More information about the pypy-commit mailing list