[pypy-commit] pypy jitframe-on-heap: update get_gcmap

bivab noreply at buildbot.pypy.org
Tue Mar 5 19:34:33 CET 2013


Author: David Schneider <david.schneider at picle.org>
Branch: jitframe-on-heap
Changeset: r62096:eaa83da7cec2
Date: 2013-03-05 19:27 +0100
http://bitbucket.org/pypy/pypy/changeset/eaa83da7cec2/

Log:	update get_gcmap

diff --git a/rpython/jit/backend/arm/regalloc.py b/rpython/jit/backend/arm/regalloc.py
--- a/rpython/jit/backend/arm/regalloc.py
+++ b/rpython/jit/backend/arm/regalloc.py
@@ -32,6 +32,7 @@
 from rpython.jit.backend.llsupport.descr import unpack_arraydescr
 from rpython.jit.backend.llsupport.descr import unpack_fielddescr
 from rpython.jit.backend.llsupport.descr import unpack_interiorfielddescr
+from rpython.rlib.rarithmetic import r_longlong, r_uint
 
 
 # xxx hack: set a default value for TargetToken._ll_loop_code.  If 0, we know
@@ -341,14 +342,14 @@
         for box, loc in self.rm.reg_bindings.iteritems():
             if loc in forbidden_regs:
                 continue
-            if box.type == REF and self.fm.stays_alive(box):
+            if box.type == REF and self.rm.is_still_alive(box):
                 assert not noregs
-                assert isinstance(loc, RegLoc)
-                val = gpr_reg_mgr_cls.all_reg_indexes[loc.value]
+                assert loc.is_reg()
+                val = loc.value
                 gcmap[val // WORD // 8] |= r_uint(1) << (val % (WORD * 8))
         for box, loc in self.fm.bindings.iteritems():
-            if box.type == REF and self.fm.stays_alive(box):
-                assert isinstance(loc, StackLoc)
+            if box.type == REF and self.rm.is_still_alive(box):
+                assert loc.is_stack()
                 val = loc.value // WORD
                 gcmap[val // WORD // 8] |= r_uint(1) << (val % (WORD * 8))
         for i in range(len(gcmap)):


More information about the pypy-commit mailing list