Author: Richard Plangger <[email protected]>
Branch: s390x-backend
Changeset: r80790:279538e83767
Date: 2015-11-20 12:29 +0100
http://bitbucket.org/pypy/pypy/changeset/279538e83767/

Log:    did not free the list of pending guard tokens, now the backend does
        not keep pending guard tokens around. (gc.get_referrers is quite a
        handy function)

diff --git a/rpython/jit/backend/zarch/assembler.py 
b/rpython/jit/backend/zarch/assembler.py
--- a/rpython/jit/backend/zarch/assembler.py
+++ b/rpython/jit/backend/zarch/assembler.py
@@ -36,8 +36,6 @@
     def __init__(self, cpu, translate_support_code=False):
         BaseAssembler.__init__(self, cpu, translate_support_code)
         self.mc = None
-        self.pool = LiteralPool()
-        self.pending_guards = None
         self.current_clt = None
         self._regalloc = None
         self.datablockwrapper = None
@@ -64,12 +62,14 @@
         self.mc.datablockwrapper = self.datablockwrapper
         self.target_tokens_currently_compiling = {}
         self.frame_depth_to_patch = []
+        self.pool = LiteralPool()
 
     def teardown(self):
+        self.pending_guard_tokens = None
         self.current_clt = None
         self._regalloc = None
         self.mc = None
-        self.pending_guards = None
+        self.pool = None
 
     def target_arglocs(self, looptoken):
         return looptoken._zarch_arglocs
@@ -383,7 +383,7 @@
         regalloc.compute_hint_frame_locations(operations)
         regalloc.walk_operations(inputargs, operations)
         assert self.guard_success_cc == c.cond_none
-        if 1: # we_are_translated() or self.cpu.dont_keepalive_stuff:
+        if we_are_translated() or self.cpu.dont_keepalive_stuff:
             self._regalloc = None   # else keep it around for debugging
         frame_depth = regalloc.get_final_frame_depth()
         jump_target_descr = regalloc.jump_target_descr
diff --git a/rpython/jit/backend/zarch/codebuilder.py 
b/rpython/jit/backend/zarch/codebuilder.py
--- a/rpython/jit/backend/zarch/codebuilder.py
+++ b/rpython/jit/backend/zarch/codebuilder.py
@@ -78,7 +78,6 @@
         pos = self.get_relative_pos()
         self.ops_offset[op] = pos
 
-
     def _dump_trace(self, addr, name, formatter=-1):
         if not we_are_translated():
             if formatter != -1:
@@ -110,7 +109,6 @@
 
     def b_cond_offset(self, offset, condition):
         assert condition != c.cond_none
-        # TODO ? BI, BO = c.encoding[condition]
         self.BRC(condition, l.imm(offset))
 
     def b_offset(self, reladdr):
@@ -118,7 +116,6 @@
         self.BRC(c.ANY, l.imm(offset))
 
     def reserve_guard_branch(self):
-        print "reserve!", self.get_relative_pos()
         self.BRC(l.imm(0x0), l.imm(0))
 
     def cmp_op(self, a, b, pool=False, imm=False, signed=True, fp=False):
diff --git a/rpython/jit/backend/zarch/pool.py 
b/rpython/jit/backend/zarch/pool.py
--- a/rpython/jit/backend/zarch/pool.py
+++ b/rpython/jit/backend/zarch/pool.py
@@ -154,8 +154,7 @@
         for guard_token in pending_guard_tokens:
             descr = guard_token.faildescr
             offset = self.offset_map[descr]
+            assert isinstance(offset, int)
             guard_token._pool_offset = offset
             ptr = rffi.cast(lltype.Signed, guard_token.gcmap)
             self.overwrite_64(mc, offset + RECOVERY_GCMAP_POOL_OFFSET, ptr)
-
-        self.reset()
diff --git a/rpython/jit/backend/zarch/runner.py 
b/rpython/jit/backend/zarch/runner.py
--- a/rpython/jit/backend/zarch/runner.py
+++ b/rpython/jit/backend/zarch/runner.py
@@ -17,6 +17,7 @@
     cast_ptr_to_int = staticmethod(cast_ptr_to_int)
 
 class CPU_S390_64(AbstractZARCHCPU):
+    dont_keepalive_stuff = True
     supports_floats = True
 
     IS_64_BIT = True
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to