[pypy-commit] pypy default: more backend cleanup
bivab
noreply at buildbot.pypy.org
Thu Apr 11 17:11:53 CEST 2013
Author: David Schneider <david.schneider at picle.org>
Branch:
Changeset: r63233:5d1d12a617b0
Date: 2013-04-11 17:11 +0200
http://bitbucket.org/pypy/pypy/changeset/5d1d12a617b0/
Log: more backend cleanup
diff --git a/rpython/jit/backend/arm/assembler.py b/rpython/jit/backend/arm/assembler.py
--- a/rpython/jit/backend/arm/assembler.py
+++ b/rpython/jit/backend/arm/assembler.py
@@ -47,14 +47,8 @@
self.stack_check_slowpath = 0
self._debug = False
self.loop_run_counters = []
- self.debug_counter_descr = cpu.fielddescrof(DEBUG_COUNTER, 'i')
self.gcrootmap_retaddr_forced = 0
- def set_debug(self, v):
- r = self._debug
- self._debug = v
- return r
-
def setup(self, looptoken):
assert self.memcpy_addr != 0, 'setup_once() not called?'
if we_are_translated():
@@ -80,37 +74,6 @@
def setup_failure_recovery(self):
self.failure_recovery_code = [0, 0, 0, 0]
- def finish_once(self):
- if self._debug:
- debug_start('jit-backend-counts')
- for i in range(len(self.loop_run_counters)):
- struct = self.loop_run_counters[i]
- if struct.type == 'l':
- prefix = 'TargetToken(%d)' % struct.number
- elif struct.type == 'b':
- prefix = 'bridge ' + str(struct.number)
- else:
- prefix = 'entry ' + str(struct.number)
- debug_print(prefix + ':' + str(struct.i))
- debug_stop('jit-backend-counts')
-
- # XXX: merge with x86
- def _register_counter(self, tp, number, token):
- # YYY very minor leak -- we need the counters to stay alive
- # forever, just because we want to report them at the end
- # of the process
- struct = lltype.malloc(DEBUG_COUNTER, flavor='raw',
- track_allocation=False)
- struct.i = 0
- struct.type = tp
- if tp == 'b' or tp == 'e':
- struct.number = number
- else:
- assert token
- struct.number = compute_unique_id(token)
- self.loop_run_counters.append(struct)
- return struct
-
@staticmethod
def _release_gil_shadowstack():
before = rffi.aroundstate.before
diff --git a/rpython/jit/backend/llsupport/assembler.py b/rpython/jit/backend/llsupport/assembler.py
--- a/rpython/jit/backend/llsupport/assembler.py
+++ b/rpython/jit/backend/llsupport/assembler.py
@@ -8,7 +8,7 @@
from rpython.rlib.debug import (debug_start, debug_stop, have_debug_prints,
debug_print)
from rpython.rlib.rarithmetic import r_uint
-from rpython.rlib.objectmodel import specialize
+from rpython.rlib.objectmodel import specialize, compute_unique_id
from rpython.rtyper.annlowlevel import cast_instance_to_gcref
from rpython.rtyper.lltypesystem import rffi, lltype
@@ -63,6 +63,8 @@
self.cpu = cpu
self.memcpy_addr = 0
self.rtyper = cpu.rtyper
+ self.debug_counter_descr = cpu.fielddescrof(DEBUG_COUNTER, 'i')
+ self._debug = False
def setup_once(self):
# the address of the function called by 'new'
@@ -100,6 +102,11 @@
track_allocation=False)
self.gcmap_for_finish[0] = r_uint(1)
+ def set_debug(self, v):
+ r = self._debug
+ self._debug = v
+ return r
+
def rebuild_faillocs_from_descr(self, descr, inputargs):
locs = []
GPR_REGS = len(self.cpu.gen_regs)
@@ -245,6 +252,37 @@
None, descr=self.debug_counter_descr)]
operations.extend(ops)
+ def _register_counter(self, tp, number, token):
+ # YYY very minor leak -- we need the counters to stay alive
+ # forever, just because we want to report them at the end
+ # of the process
+ struct = lltype.malloc(DEBUG_COUNTER, flavor='raw',
+ track_allocation=False)
+ struct.i = 0
+ struct.type = tp
+ if tp == 'b' or tp == 'e':
+ struct.number = number
+ else:
+ assert token
+ struct.number = compute_unique_id(token)
+ self.loop_run_counters.append(struct)
+ return struct
+
+ def finish_once(self):
+ if self._debug:
+ debug_start('jit-backend-counts')
+ for i in range(len(self.loop_run_counters)):
+ struct = self.loop_run_counters[i]
+ if struct.type == 'l':
+ prefix = 'TargetToken(%d)' % struct.number
+ elif struct.type == 'b':
+ prefix = 'bridge ' + str(struct.number)
+ else:
+ prefix = 'entry ' + str(struct.number)
+ debug_print(prefix + ':' + str(struct.i))
+ debug_stop('jit-backend-counts')
+
+
def debug_bridge(descr_number, rawstart, codeendpos):
debug_start("jit-backend-addr")
diff --git a/rpython/jit/backend/x86/assembler.py b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -23,7 +23,7 @@
r12, r13, r14, r15, X86_64_SCRATCH_REG, X86_64_XMM_SCRATCH_REG,
RegLoc, FrameLoc, ConstFloatLoc, ImmedLoc, AddressLoc, imm,
imm0, imm1, FloatImmedLoc, RawEbpLoc, RawEspLoc)
-from rpython.rlib.objectmodel import we_are_translated, specialize
+from rpython.rlib.objectmodel import we_are_translated
from rpython.jit.backend.x86 import rx86, codebuf
from rpython.jit.metainterp.resoperation import rop
from rpython.jit.backend.x86 import support
@@ -62,18 +62,11 @@
self.malloc_slowpath = 0
self.wb_slowpath = [0, 0, 0, 0, 0]
self.setup_failure_recovery()
- self._debug = False
- self.debug_counter_descr = cpu.fielddescrof(DEBUG_COUNTER, 'i')
self.datablockwrapper = None
self.stack_check_slowpath = 0
self.propagate_exception_path = 0
self.teardown()
- def set_debug(self, v):
- r = self._debug
- self._debug = v
- return r
-
def setup_once(self):
BaseAssembler.setup_once(self)
if self.cpu.supports_floats:
@@ -103,20 +96,6 @@
self.mc = None
self.current_clt = None
- def finish_once(self):
- if self._debug:
- debug_start('jit-backend-counts')
- for i in range(len(self.loop_run_counters)):
- struct = self.loop_run_counters[i]
- if struct.type == 'l':
- prefix = 'TargetToken(%d)' % struct.number
- elif struct.type == 'b':
- prefix = 'bridge ' + str(struct.number)
- else:
- prefix = 'entry ' + str(struct.number)
- debug_print(prefix + ':' + str(struct.i))
- debug_stop('jit-backend-counts')
-
def _build_float_constants(self):
datablockwrapper = MachineDataBlockWrapper(self.cpu.asmmemmgr, [])
float_constants = datablockwrapper.malloc_aligned(32, alignment=16)
@@ -698,22 +677,6 @@
allblocks = self.get_asmmemmgr_blocks(looptoken)
return self.mc.materialize(self.cpu.asmmemmgr, allblocks,
self.cpu.gc_ll_descr.gcrootmap)
-
- def _register_counter(self, tp, number, token):
- # YYY very minor leak -- we need the counters to stay alive
- # forever, just because we want to report them at the end
- # of the process
- struct = lltype.malloc(DEBUG_COUNTER, flavor='raw',
- track_allocation=False)
- struct.i = 0
- struct.type = tp
- if tp == 'b' or tp == 'e':
- struct.number = number
- else:
- assert token
- struct.number = compute_unique_id(token)
- self.loop_run_counters.append(struct)
- return struct
def patch_jump_for_descr(self, faildescr, adr_new_target):
adr_jump_offset = faildescr._x86_adr_jump_offset
More information about the pypy-commit
mailing list