[pypy-commit] pypy x86-dump-labels: rename labels to ops_offset, which is clearer
antocuni
noreply at buildbot.pypy.org
Thu May 12 13:53:30 CEST 2011
Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: x86-dump-labels
Changeset: r44098:e720a9242b6b
Date: 2011-05-12 14:01 +0200
http://bitbucket.org/pypy/pypy/changeset/e720a9242b6b/
Log: rename labels to ops_offset, which is clearer
diff --git a/pypy/jit/backend/model.py b/pypy/jit/backend/model.py
--- a/pypy/jit/backend/model.py
+++ b/pypy/jit/backend/model.py
@@ -59,11 +59,11 @@
looptoken.compiled_loop_token and stick extra attributes
on it to point to the compiled loop in assembler.
- Optionally, return a ``labels`` dictionary, which maps each operation
- to its offset in the compiled code. The ``labels`` dictionary is then
+ Optionally, return a ``ops_offset`` dictionary, which maps each operation
+ to its offset in the compiled code. The ``ops_offset`` dictionary is then
used by the operation logger to print the offsets in the log. The
offset representing the end of the last operation is stored in
- ``labels[None]``: note that this might not coincide with the end of
+ ``ops_offset[None]``: note that this might not coincide with the end of
the loop, because usually in the loop footer there is code which does
not belong to any particular operation.
"""
@@ -74,7 +74,7 @@
"""Assemble the bridge.
The FailDescr is the descr of the original guard that failed.
- Optionally, return a ``labels`` dictionary. See the docstring of
+ Optionally, return a ``ops_offset`` dictionary. See the docstring of
``compiled_loop`` for more informations about it.
"""
raise NotImplementedError
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
@@ -361,12 +361,12 @@
frame_depth + param_depth)
self.patch_pending_failure_recoveries(rawstart)
#
- labels = self.mc.labels
+ ops_offset = self.mc.ops_offset
if not we_are_translated():
# used only by looptoken.dump() -- useful in tests
looptoken._x86_rawstart = rawstart
looptoken._x86_fullsize = fullsize
- looptoken._x86_labels = labels
+ looptoken._x86_ops_offset = ops_offset
looptoken._x86_bootstrap_code = rawstart + bootstrappos
looptoken._x86_loop_code = rawstart + self.looppos
@@ -377,7 +377,7 @@
name = "Loop # %s: %s" % (looptoken.number, funcname)
self.cpu.profile_agent.native_code_written(name,
rawstart, fullsize)
- return labels
+ return ops_offset
def assemble_bridge(self, faildescr, inputargs, operations,
original_loop_token, log):
@@ -427,14 +427,14 @@
faildescr._x86_bridge_param_depth = param_depth
# patch the jump from original guard
self.patch_jump_for_descr(faildescr, rawstart)
- labels = self.mc.labels
+ ops_offset = self.mc.ops_offset
self.teardown()
# oprofile support
if self.cpu.profile_agent is not None:
name = "Bridge # %s: %s" % (descr_number, funcname)
self.cpu.profile_agent.native_code_written(name,
rawstart, fullsize)
- return labels
+ return ops_offset
def write_pending_failure_recoveries(self):
# for each pending guard, generate the code of the recovery stub
diff --git a/pypy/jit/backend/x86/codebuf.py b/pypy/jit/backend/x86/codebuf.py
--- a/pypy/jit/backend/x86/codebuf.py
+++ b/pypy/jit/backend/x86/codebuf.py
@@ -27,17 +27,18 @@
# at [p-4:p] encode an absolute address that will need to be
# made relative.
self.relocations = []
+ #
# ResOperation --> offset in the assembly.
- # labels[None] represents the beginning of the code after the last op
- # (i.e., the tail of the loop
- self.labels = {}
+ # ops_offset[None] represents the beginning of the code after the last op
+ # (i.e., the tail of the loop)
+ self.ops_offset = {}
def add_pending_relocation(self):
self.relocations.append(self.get_relative_pos())
def mark_op(self, op):
pos = self.get_relative_pos()
- self.labels[op] = pos
+ self.ops_offset[op] = pos
def copy_to_raw_memory(self, addr):
self._copy_to_raw_memory(addr)
diff --git a/pypy/jit/backend/x86/runner.py b/pypy/jit/backend/x86/runner.py
--- a/pypy/jit/backend/x86/runner.py
+++ b/pypy/jit/backend/x86/runner.py
@@ -66,7 +66,8 @@
"""
from pypy.jit.backend.x86.tool.viewcode import machine_code_dump
data = []
- label_list = [(offset, name) for name, offset in looptoken._x86_labels.iteritems()]
+ label_list = [(offset, name) for name, offset in
+ looptoken._x86_ops_offset.iteritems()]
label_list.sort()
addr = looptoken._x86_rawstart
src = rffi.cast(rffi.CCHARP, addr)
diff --git a/pypy/jit/backend/x86/test/test_runner.py b/pypy/jit/backend/x86/test/test_runner.py
--- a/pypy/jit/backend/x86/test/test_runner.py
+++ b/pypy/jit/backend/x86/test/test_runner.py
@@ -390,7 +390,7 @@
res = self.cpu.get_latest_value_int(0)
assert res == 20
- def test_labels(self):
+ def test_ops_offset(self):
from pypy.rlib import debug
i0 = BoxInt()
i1 = BoxInt()
@@ -403,17 +403,16 @@
]
inputargs = [i0]
debug._log = dlog = debug.DebugLog()
- labels = self.cpu.compile_loop(inputargs, operations, looptoken)
+ ops_offset = self.cpu.compile_loop(inputargs, operations, looptoken)
debug._log = None
#
- # check the labels saved on the looptoken
- assert labels is looptoken._x86_labels
+ assert ops_offset is looptoken._x86_ops_offset
# getfield_raw/int_add/setfield_raw + ops + None
- assert len(labels) == 3 + len(operations) + 1
- assert (labels[operations[0]] <=
- labels[operations[1]] <=
- labels[operations[2]] <=
- labels[None])
+ assert len(ops_offset) == 3 + len(operations) + 1
+ assert (ops_offset[operations[0]] <=
+ ops_offset[operations[1]] <=
+ ops_offset[operations[2]] <=
+ ops_offset[None])
class TestDebuggingAssembler(object):
def setup_method(self, meth):
diff --git a/pypy/jit/metainterp/compile.py b/pypy/jit/metainterp/compile.py
--- a/pypy/jit/metainterp/compile.py
+++ b/pypy/jit/metainterp/compile.py
@@ -162,8 +162,8 @@
metainterp_sd.profiler.start_backend()
debug_start("jit-backend")
try:
- labels = metainterp_sd.cpu.compile_loop(loop.inputargs, loop.operations,
- loop.token)
+ ops_offset = metainterp_sd.cpu.compile_loop(loop.inputargs, loop.operations,
+ loop.token)
finally:
debug_stop("jit-backend")
metainterp_sd.profiler.end_backend()
@@ -175,7 +175,7 @@
loop._ignore_during_counting = True
metainterp_sd.log("compiled new " + type)
#
- metainterp_sd.logger_ops.log_loop(loop.inputargs, loop.operations, n, type, labels)
+ metainterp_sd.logger_ops.log_loop(loop.inputargs, loop.operations, n, type, ops_offset)
short = loop.token.short_preamble
if short:
metainterp_sd.logger_ops.log_short_preamble(short[-1].inputargs,
@@ -192,8 +192,8 @@
metainterp_sd.profiler.start_backend()
debug_start("jit-backend")
try:
- labels = metainterp_sd.cpu.compile_bridge(faildescr, inputargs, operations,
- original_loop_token)
+ ops_offset = metainterp_sd.cpu.compile_bridge(faildescr, inputargs, operations,
+ original_loop_token)
finally:
debug_stop("jit-backend")
metainterp_sd.profiler.end_backend()
@@ -202,7 +202,7 @@
metainterp_sd.log("compiled new bridge")
#
n = metainterp_sd.cpu.get_fail_descr_number(faildescr)
- metainterp_sd.logger_ops.log_bridge(inputargs, operations, n, labels)
+ metainterp_sd.logger_ops.log_bridge(inputargs, operations, n, ops_offset)
#
if metainterp_sd.warmrunnerdesc is not None: # for tests
metainterp_sd.warmrunnerdesc.memory_manager.keep_loop_alive(
diff --git a/pypy/jit/metainterp/logger.py b/pypy/jit/metainterp/logger.py
--- a/pypy/jit/metainterp/logger.py
+++ b/pypy/jit/metainterp/logger.py
@@ -14,33 +14,33 @@
self.ts = metainterp_sd.cpu.ts
self.guard_number = guard_number
- def log_loop(self, inputargs, operations, number=0, type=None, labels=None):
+ def log_loop(self, inputargs, operations, number=0, type=None, ops_offset=None):
if type is None:
debug_start("jit-log-noopt-loop")
- self._log_operations(inputargs, operations, labels)
+ self._log_operations(inputargs, operations, ops_offset)
debug_stop("jit-log-noopt-loop")
else:
debug_start("jit-log-opt-loop")
debug_print("# Loop", number, ":", type,
"with", len(operations), "ops")
- self._log_operations(inputargs, operations, labels)
+ self._log_operations(inputargs, operations, ops_offset)
debug_stop("jit-log-opt-loop")
- def log_bridge(self, inputargs, operations, number=-1, labels=None):
+ def log_bridge(self, inputargs, operations, number=-1, ops_offset=None):
if number == -1:
debug_start("jit-log-noopt-bridge")
- self._log_operations(inputargs, operations, labels)
+ self._log_operations(inputargs, operations, ops_offset)
debug_stop("jit-log-noopt-bridge")
else:
debug_start("jit-log-opt-bridge")
debug_print("# bridge out of Guard", number,
"with", len(operations), "ops")
- self._log_operations(inputargs, operations, labels)
+ self._log_operations(inputargs, operations, ops_offset)
debug_stop("jit-log-opt-bridge")
def log_short_preamble(self, inputargs, operations):
debug_start("jit-log-short-preamble")
- self._log_operations(inputargs, operations, labels=None)
+ self._log_operations(inputargs, operations, ops_offset=None)
debug_stop("jit-log-short-preamble")
def repr_of_descr(self, descr):
@@ -75,11 +75,11 @@
else:
return '?'
- def _log_operations(self, inputargs, operations, labels):
+ def _log_operations(self, inputargs, operations, ops_offset):
if not have_debug_prints():
return
- if labels is None:
- labels = {}
+ if ops_offset is None:
+ ops_offset = {}
memo = {}
if inputargs is not None:
args = ", ".join([self.repr_of_arg(memo, arg) for arg in inputargs])
@@ -91,7 +91,7 @@
reclev = op.getarg(1).getint()
debug_print("debug_merge_point('%s', %s)" % (loc, reclev))
continue
- offset = labels.get(op, -1)
+ offset = ops_offset.get(op, -1)
if offset == -1:
s_offset = ""
else:
@@ -117,8 +117,8 @@
fail_args = ''
debug_print(s_offset + res + op.getopname() +
'(' + args + ')' + fail_args)
- if labels and None in labels:
- offset = labels[None]
+ if ops_offset and None in ops_offset:
+ offset = ops_offset[None]
debug_print("+%d: # --end of the loop--" % offset)
diff --git a/pypy/jit/metainterp/test/test_compile.py b/pypy/jit/metainterp/test/test_compile.py
--- a/pypy/jit/metainterp/test/test_compile.py
+++ b/pypy/jit/metainterp/test/test_compile.py
@@ -34,7 +34,7 @@
self.seen.append((inputargs, operations, token))
class FakeLogger(object):
- def log_loop(self, inputargs, operations, number=0, type=None, labels=None):
+ def log_loop(self, inputargs, operations, number=0, type=None, ops_offset=None):
pass
class FakeState(object):
diff --git a/pypy/jit/metainterp/test/test_logger.py b/pypy/jit/metainterp/test/test_logger.py
--- a/pypy/jit/metainterp/test/test_logger.py
+++ b/pypy/jit/metainterp/test/test_logger.py
@@ -31,10 +31,10 @@
return log_stream.getvalue()
class Logger(logger.Logger):
- def log_loop(self, loop, namespace={}, labels=None):
+ def log_loop(self, loop, namespace={}, ops_offset=None):
self.namespace = namespace
return capturing(logger.Logger.log_loop, self,
- loop.inputargs, loop.operations, labels=labels)
+ loop.inputargs, loop.operations, ops_offset=ops_offset)
def repr_of_descr(self, descr):
for k, v in self.namespace.items():
@@ -179,7 +179,7 @@
assert output.splitlines()[0] == "# bridge out of Guard 3 with 0 ops"
pure_parse(output)
- def test_labels(self):
+ def test_ops_offset(self):
inp = '''
[i0]
i1 = int_add(i0, 1)
@@ -188,13 +188,13 @@
'''
loop = pure_parse(inp)
ops = loop.operations
- labels = {
+ ops_offset = {
ops[0]: 10,
ops[2]: 30,
None: 40
}
logger = Logger(self.make_metainterp_sd())
- output = logger.log_loop(loop, labels=labels)
+ output = logger.log_loop(loop, ops_offset=ops_offset)
assert output.strip() == """
[i0]
+10: i2 = int_add(i0, 1)
More information about the pypy-commit
mailing list