Author: Antonio Cuni <[email protected]>
Branch: x86-dump-labels
Changeset: r44117:34fe5f5bf59b
Date: 2011-05-13 12:45 +0200
http://bitbucket.org/pypy/pypy/changeset/34fe5f5bf59b/
Log: make rewrite_assembler returning a copy of operations, instead of
modifying it in-place; this way, we can still access and log the old
list, with the corresponding offsets
diff --git a/pypy/jit/backend/llsupport/gc.py b/pypy/jit/backend/llsupport/gc.py
--- a/pypy/jit/backend/llsupport/gc.py
+++ b/pypy/jit/backend/llsupport/gc.py
@@ -35,7 +35,7 @@
def do_write_barrier(self, gcref_struct, gcref_newptr):
pass
def rewrite_assembler(self, cpu, operations):
- pass
+ return operations
def can_inline_malloc(self, descr):
return False
def can_inline_malloc_varsize(self, descr, num_elem):
@@ -831,8 +831,7 @@
op = op.copy_and_change(rop.SETARRAYITEM_RAW)
# ----------
newops.append(op)
- del operations[:]
- operations.extend(newops)
+ return newops
def _gen_write_barrier(self, newops, v_base, v_value):
args = [v_base, v_value]
diff --git a/pypy/jit/backend/x86/assembler.py
b/pypy/jit/backend/x86/assembler.py
--- a/pypy/jit/backend/x86/assembler.py
+++ b/pypy/jit/backend/x86/assembler.py
@@ -334,7 +334,7 @@
operations = self._inject_debugging_code(looptoken, operations)
regalloc = RegAlloc(self, self.cpu.translate_support_code)
- arglocs = regalloc.prepare_loop(inputargs, operations, looptoken)
+ arglocs, operations = regalloc.prepare_loop(inputargs, operations,
looptoken)
looptoken._x86_arglocs = arglocs
bootstrappos = self.mc.get_relative_pos()
@@ -405,8 +405,8 @@
[loc.assembler() for loc in faildescr._x86_debug_faillocs])
regalloc = RegAlloc(self, self.cpu.translate_support_code)
fail_depths = faildescr._x86_current_depths
- regalloc.prepare_bridge(fail_depths, inputargs, arglocs,
- operations)
+ operations = regalloc.prepare_bridge(fail_depths, inputargs, arglocs,
+ operations)
stackadjustpos = self._patchable_stackadjust()
frame_depth, param_depth = self._assemble(regalloc, operations)
diff --git a/pypy/jit/backend/x86/regalloc.py b/pypy/jit/backend/x86/regalloc.py
--- a/pypy/jit/backend/x86/regalloc.py
+++ b/pypy/jit/backend/x86/regalloc.py
@@ -161,7 +161,7 @@
self.fm = X86FrameManager()
self.param_depth = 0
cpu = self.assembler.cpu
- cpu.gc_ll_descr.rewrite_assembler(cpu, operations)
+ operations = cpu.gc_ll_descr.rewrite_assembler(cpu, operations)
# compute longevity of variables
longevity = self._compute_vars_longevity(inputargs, operations)
self.longevity = longevity
@@ -170,20 +170,22 @@
assembler = self.assembler)
self.xrm = xmm_reg_mgr_cls(longevity, frame_manager = self.fm,
assembler = self.assembler)
+ return operations
def prepare_loop(self, inputargs, operations, looptoken):
- self._prepare(inputargs, operations)
+ operations = self._prepare(inputargs, operations)
jump = operations[-1]
loop_consts = self._compute_loop_consts(inputargs, jump, looptoken)
self.loop_consts = loop_consts
- return self._process_inputargs(inputargs)
+ return self._process_inputargs(inputargs), operations
def prepare_bridge(self, prev_depths, inputargs, arglocs, operations):
- self._prepare(inputargs, operations)
+ operations = self._prepare(inputargs, operations)
self.loop_consts = {}
self._update_bindings(arglocs, inputargs)
self.fm.frame_depth = prev_depths[0]
self.param_depth = prev_depths[1]
+ return operations
def reserve_param(self, n):
self.param_depth = max(self.param_depth, n)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit