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