Author: Maciej Fijalkowski <[email protected]>
Branch: rewritten-loop-logging
Changeset: r66182:b2ed08e955d9
Date: 2013-08-17 16:47 +0200
http://bitbucket.org/pypy/pypy/changeset/b2ed08e955d9/
Log: Enable rewritten loop to be dumped
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
@@ -571,7 +571,8 @@
self.mc.BL(self.stack_check_slowpath, c=c.HI) # call if ip >
lr
# cpu interface
- def assemble_loop(self, loopname, inputargs, operations, looptoken, log):
+ def assemble_loop(self, logger, loopname, inputargs, operations, looptoken,
+ log):
clt = CompiledLoopToken(self.cpu, looptoken.number)
looptoken.compiled_loop_token = clt
clt._debug_nbargs = len(inputargs)
@@ -644,8 +645,8 @@
frame_depth = max(frame_depth, target_frame_depth)
return frame_depth
- def assemble_bridge(self, faildescr, inputargs, operations,
- original_loop_token, log):
+ def assemble_bridge(self, logger, faildescr, inputargs, operations,
+ original_loop_token, log):
if not we_are_translated():
# Arguments should be unique
assert len(set(inputargs)) == len(inputargs)
diff --git a/rpython/jit/backend/arm/runner.py
b/rpython/jit/backend/arm/runner.py
--- a/rpython/jit/backend/arm/runner.py
+++ b/rpython/jit/backend/arm/runner.py
@@ -56,17 +56,18 @@
def finish_once(self):
self.assembler.finish_once()
- def compile_loop(self, inputargs, operations, looptoken,
+ def compile_loop(self, logger, inputargs, operations, looptoken,
log=True, name=''):
- return self.assembler.assemble_loop(name, inputargs, operations,
- looptoken, log=log)
+ return self.assembler.assemble_loop(logger, name, inputargs,
operations,
+ looptoken, log=log)
- def compile_bridge(self, faildescr, inputargs, operations,
+ def compile_bridge(self, logger, faildescr, inputargs, operations,
original_loop_token, log=True):
clt = original_loop_token.compiled_loop_token
clt.compiling_a_bridge()
- return self.assembler.assemble_bridge(faildescr, inputargs, operations,
- original_loop_token, log=log)
+ return self.assembler.assemble_bridge(logger, faildescr, inputargs,
+ operations,
+ original_loop_token, log=log)
def clear_latest_values(self, count):
setitem = self.assembler.fail_boxes_ptr.setitem
diff --git a/rpython/jit/backend/llgraph/runner.py
b/rpython/jit/backend/llgraph/runner.py
--- a/rpython/jit/backend/llgraph/runner.py
+++ b/rpython/jit/backend/llgraph/runner.py
@@ -183,7 +183,8 @@
self.stats = stats or MiniStats()
self.vinfo_for_tests = kwds.get('vinfo_for_tests', None)
- def compile_loop(self, inputargs, operations, looptoken, log=True,
name=''):
+ def compile_loop(self, logger, inputargs, operations, looptoken, log=True,
+ name=''):
clt = model.CompiledLoopToken(self, looptoken.number)
looptoken.compiled_loop_token = clt
lltrace = LLTrace(inputargs, operations)
@@ -191,7 +192,7 @@
clt._llgraph_alltraces = [lltrace]
self._record_labels(lltrace)
- def compile_bridge(self, faildescr, inputargs, operations,
+ def compile_bridge(self, logger, faildescr, inputargs, operations,
original_loop_token, log=True):
clt = original_loop_token.compiled_loop_token
clt.compiling_a_bridge()
diff --git a/rpython/jit/backend/model.py b/rpython/jit/backend/model.py
--- a/rpython/jit/backend/model.py
+++ b/rpython/jit/backend/model.py
@@ -51,7 +51,8 @@
"""
return False
- def compile_loop(self, inputargs, operations, looptoken, log=True,
name=''):
+ def compile_loop(self, logger, inputargs, operations, looptoken,
+ log=True, name=''):
"""Assemble the given loop.
Should create and attach a fresh CompiledLoopToken to
looptoken.compiled_loop_token and stick extra attributes
@@ -67,7 +68,7 @@
"""
raise NotImplementedError
- def compile_bridge(self, faildescr, inputargs, operations,
+ def compile_bridge(self, logger, faildescr, inputargs, operations,
original_loop_token, log=True):
"""Assemble the bridge.
The FailDescr is the descr of the original guard that failed.
diff --git a/rpython/jit/backend/test/runner_test.py
b/rpython/jit/backend/test/runner_test.py
--- a/rpython/jit/backend/test/runner_test.py
+++ b/rpython/jit/backend/test/runner_test.py
@@ -49,7 +49,7 @@
valueboxes,
descr)
looptoken = JitCellToken()
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
args = []
for box in inputargs:
if isinstance(box, BoxInt):
@@ -127,7 +127,7 @@
]
inputargs = [i0]
looptoken = JitCellToken()
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
deadframe = self.cpu.execute_token(looptoken, 2)
fail = self.cpu.get_latest_descr(deadframe)
res = self.cpu.get_int_value(deadframe, 0)
@@ -145,7 +145,7 @@
]
inputargs = [i0]
looptoken = JitCellToken()
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
deadframe = self.cpu.execute_token(looptoken,
longlong.getfloatstorage(2.8))
fail = self.cpu.get_latest_descr(deadframe)
@@ -170,7 +170,7 @@
inputargs = [i0]
operations[3].setfailargs([i1])
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
deadframe = self.cpu.execute_token(looptoken, 2)
fail = self.cpu.get_latest_descr(deadframe)
assert fail.identifier == 2
@@ -195,7 +195,7 @@
inputargs = [i3]
operations[4].setfailargs([None, None, i1, None])
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
deadframe = self.cpu.execute_token(looptoken, 44)
fail = self.cpu.get_latest_descr(deadframe)
assert fail.identifier == 2
@@ -221,7 +221,7 @@
operations[3].setfailargs([i1])
wr_i1 = weakref.ref(i1)
wr_guard = weakref.ref(operations[2])
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
if hasattr(looptoken, '_x86_ops_offset'):
del looptoken._x86_ops_offset # else it's kept alive
del i0, i1, i2
@@ -249,7 +249,7 @@
]
inputargs = [i0]
operations[3].setfailargs([i1])
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
i1b = BoxInt()
i3 = BoxInt()
@@ -260,7 +260,7 @@
]
bridge[1].setfailargs([i1b])
- self.cpu.compile_bridge(faildescr1, [i1b], bridge, looptoken)
+ self.cpu.compile_bridge(None, faildescr1, [i1b], bridge, looptoken)
deadframe = self.cpu.execute_token(looptoken, 2)
fail = self.cpu.get_latest_descr(deadframe)
@@ -291,7 +291,7 @@
]
inputargs = [i3]
operations[4].setfailargs([None, i1, None])
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
i1b = BoxInt()
i3 = BoxInt()
@@ -302,7 +302,7 @@
]
bridge[1].setfailargs([i1b])
- self.cpu.compile_bridge(faildescr1, [i1b], bridge, looptoken)
+ self.cpu.compile_bridge(None, faildescr1, [i1b], bridge, looptoken)
deadframe = self.cpu.execute_token(looptoken, 2)
fail = self.cpu.get_latest_descr(deadframe)
@@ -320,7 +320,7 @@
]
inputargs = [i0]
operations[0].setfailargs([i0])
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
i1list = [BoxInt() for i in range(150)]
bridge = []
@@ -334,7 +334,7 @@
descr=BasicFinalDescr(4)))
bridge[-2].setfailargs(i1list)
- self.cpu.compile_bridge(faildescr1, [i0], bridge, looptoken)
+ self.cpu.compile_bridge(None, faildescr1, [i0], bridge, looptoken)
deadframe = self.cpu.execute_token(looptoken, 1)
fail = self.cpu.get_latest_descr(deadframe)
@@ -358,7 +358,7 @@
operations = [
ResOperation(rop.FINISH, [i0], None, descr=faildescr)
]
- self.cpu.compile_loop([i0], operations, looptoken)
+ self.cpu.compile_loop(None, [i0], operations, looptoken)
deadframe = self.cpu.execute_token(looptoken, 99)
fail = self.cpu.get_latest_descr(deadframe)
assert fail is faildescr
@@ -369,7 +369,7 @@
operations = [
ResOperation(rop.FINISH, [ConstInt(42)], None, descr=faildescr)
]
- self.cpu.compile_loop([], operations, looptoken)
+ self.cpu.compile_loop(None, [], operations, looptoken)
deadframe = self.cpu.execute_token(looptoken)
fail = self.cpu.get_latest_descr(deadframe)
assert fail is faildescr
@@ -380,7 +380,7 @@
operations = [
ResOperation(rop.FINISH, [], None, descr=faildescr)
]
- self.cpu.compile_loop([], operations, looptoken)
+ self.cpu.compile_loop(None, [], operations, looptoken)
deadframe = self.cpu.execute_token(looptoken)
fail = self.cpu.get_latest_descr(deadframe)
assert fail is faildescr
@@ -391,7 +391,7 @@
operations = [
ResOperation(rop.FINISH, [f0], None, descr=faildescr)
]
- self.cpu.compile_loop([f0], operations, looptoken)
+ self.cpu.compile_loop(None, [f0], operations, looptoken)
value = longlong.getfloatstorage(-61.25)
deadframe = self.cpu.execute_token(looptoken, value)
fail = self.cpu.get_latest_descr(deadframe)
@@ -403,7 +403,7 @@
operations = [
ResOperation(rop.FINISH, [constfloat(42.5)], None,
descr=faildescr)
]
- self.cpu.compile_loop([], operations, looptoken)
+ self.cpu.compile_loop(None, [], operations, looptoken)
deadframe = self.cpu.execute_token(looptoken)
fail = self.cpu.get_latest_descr(deadframe)
assert fail is faildescr
@@ -429,7 +429,7 @@
ResOperation(rop.JUMP, [t, z], None, descr=targettoken),
]
operations[-2].setfailargs([t, z])
- cpu.compile_loop([x, y], operations, looptoken)
+ cpu.compile_loop(None, [x, y], operations, looptoken)
deadframe = self.cpu.execute_token(looptoken, 0, 10)
assert self.cpu.get_int_value(deadframe, 0) == 0
assert self.cpu.get_int_value(deadframe, 1) == 55
@@ -488,7 +488,7 @@
ops[1].setfailargs([v_res])
#
looptoken = JitCellToken()
- self.cpu.compile_loop([v1, v2], ops, looptoken)
+ self.cpu.compile_loop(None, [v1, v2], ops, looptoken)
for x, y, z in testcases:
deadframe = self.cpu.execute_token(looptoken, x, y)
fail = self.cpu.get_latest_descr(deadframe)
@@ -1238,7 +1238,7 @@
print inputargs
for op in operations:
print op
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
#
deadframe = self.cpu.execute_token(looptoken, *values)
fail = self.cpu.get_latest_descr(deadframe)
@@ -1305,7 +1305,7 @@
operations[3].setfailargs(inputargs[:])
operations[3].setdescr(faildescr)
#
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
#
values = []
S = lltype.GcStruct('S')
@@ -1366,7 +1366,7 @@
operations[-3].setfailargs(fboxes)
operations[-2].setfailargs(fboxes)
looptoken = JitCellToken()
- self.cpu.compile_loop(fboxes, operations, looptoken)
+ self.cpu.compile_loop(None, fboxes, operations, looptoken)
fboxes2 = [BoxFloat() for i in range(12)]
f3 = BoxFloat()
@@ -1375,7 +1375,7 @@
ResOperation(rop.JUMP, [f3]+fboxes2[1:], None, descr=targettoken),
]
- self.cpu.compile_bridge(faildescr1, fboxes2, bridge, looptoken)
+ self.cpu.compile_bridge(None, faildescr1, fboxes2, bridge, looptoken)
args = []
for i in range(len(fboxes)):
@@ -1407,7 +1407,7 @@
finish()"""
loop = parse(loopops)
looptoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations, looptoken)
args = [1]
args.append(longlong.getfloatstorage(132.25))
args.append(longlong.getfloatstorage(0.75))
@@ -1428,7 +1428,7 @@
ResOperation(rop.FINISH, [], None, descr=faildescr2),
]
bridgeops[-2].setfailargs(fboxes[:])
- self.cpu.compile_bridge(loop.operations[-2].getdescr(), fboxes,
+ self.cpu.compile_bridge(None, loop.operations[-2].getdescr(), fboxes,
bridgeops, looptoken)
args = [1,
longlong.getfloatstorage(132.25),
@@ -1463,7 +1463,7 @@
]
operations[1].setfailargs([])
looptoken = JitCellToken()
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
#
for value in [-42, 0, 1, 10]:
deadframe = self.cpu.execute_token(looptoken, value)
@@ -1508,7 +1508,7 @@
]
operations[-2].setfailargs([])
looptoken = JitCellToken()
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations,
looptoken)
#
for test1 in [-65, -42, -11, 0, 1, 10]:
if test1 == -42 or combinaison[0] == 'b':
@@ -1560,7 +1560,7 @@
]
operations[-2].setfailargs([])
looptoken = JitCellToken()
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations,
looptoken)
#
for test1 in [65, 42, 11, 0, 1]:
if test1 == 42 or combinaison[0] == 'b':
@@ -1616,7 +1616,7 @@
]
operations[-2].setfailargs([])
looptoken = JitCellToken()
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations,
looptoken)
#
nan = 1e200 * 1e200
nan /= nan
@@ -1675,7 +1675,7 @@
descr=faildescr))
looptoken = JitCellToken()
#
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
#
args = []
for box in inputargs:
@@ -1748,7 +1748,7 @@
looptoken = JitCellToken()
# Use "set" to unique-ify inputargs
unique_testcase_list = list(set(testcase))
- self.cpu.compile_loop(unique_testcase_list, operations,
+ self.cpu.compile_loop(None, unique_testcase_list,
operations,
looptoken)
args = [box.getfloatstorage()
for box in unique_testcase_list]
@@ -2065,7 +2065,7 @@
exc_ptr = xptr
loop = parse(ops, self.cpu, namespace=locals())
looptoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations, looptoken)
deadframe = self.cpu.execute_token(looptoken, 1)
assert self.cpu.get_ref_value(deadframe, 0) == xptr
excvalue = self.cpu.grab_exc_value(deadframe)
@@ -2088,7 +2088,7 @@
exc_ptr = yptr
loop = parse(ops, self.cpu, namespace=locals())
looptoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations, looptoken)
deadframe = self.cpu.execute_token(looptoken, 1)
assert self.cpu.get_int_value(deadframe, 0) == 1
excvalue = self.cpu.grab_exc_value(deadframe)
@@ -2105,7 +2105,7 @@
'''
loop = parse(ops, self.cpu, namespace=locals())
looptoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations, looptoken)
deadframe = self.cpu.execute_token(looptoken, 1)
assert self.cpu.get_int_value(deadframe, 0) == 1
excvalue = self.cpu.grab_exc_value(deadframe)
@@ -2286,7 +2286,7 @@
'func_ptr': func_ptr,
'calldescr': calldescr})
looptoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations,
looptoken)
f1 = longlong.getfloatstorage(1.2)
f2 = longlong.getfloatstorage(3.4)
frame = self.cpu.execute_token(looptoken, 1, 0, 1, 2, 3, 4, 5, f1,
f2)
@@ -2331,7 +2331,7 @@
]
ops[2].setfailargs([i1, i0])
looptoken = JitCellToken()
- self.cpu.compile_loop([i0, i1], ops, looptoken)
+ self.cpu.compile_loop(None, [i0, i1], ops, looptoken)
deadframe = self.cpu.execute_token(looptoken, 20, 0)
fail = self.cpu.get_latest_descr(deadframe)
assert fail.identifier == 0
@@ -2377,7 +2377,7 @@
]
ops[2].setfailargs([i1, i2, i0])
looptoken = JitCellToken()
- self.cpu.compile_loop([i0, i1], ops, looptoken)
+ self.cpu.compile_loop(None, [i0, i1], ops, looptoken)
deadframe = self.cpu.execute_token(looptoken, 20, 0)
fail = self.cpu.get_latest_descr(deadframe)
assert fail.identifier == 0
@@ -2425,7 +2425,7 @@
]
ops[2].setfailargs([i1, f2, i0])
looptoken = JitCellToken()
- self.cpu.compile_loop([i0, i1], ops, looptoken)
+ self.cpu.compile_loop(None, [i0, i1], ops, looptoken)
deadframe = self.cpu.execute_token(looptoken, 20, 0)
fail = self.cpu.get_latest_descr(deadframe)
assert fail.identifier == 0
@@ -2467,7 +2467,7 @@
]
ops[1].setfailargs([i1, i2])
looptoken = JitCellToken()
- self.cpu.compile_loop([i1], ops, looptoken)
+ self.cpu.compile_loop(None, [i1], ops, looptoken)
deadframe = self.cpu.execute_token(looptoken, ord('G'))
fail = self.cpu.get_latest_descr(deadframe)
assert fail.identifier == 0
@@ -2525,7 +2525,7 @@
]
ops[1].setfailargs([])
looptoken = JitCellToken()
- self.cpu.compile_loop([i0, i1, i2, i3], ops, looptoken)
+ self.cpu.compile_loop(None, [i0, i1, i2, i3], ops, looptoken)
args = [rffi.cast(lltype.Signed, raw),
2,
4,
@@ -2582,7 +2582,7 @@
ResOperation(rop.FINISH, [i3], None, descr=BasicFinalDescr(0))
]
looptoken = JitCellToken()
- self.cpu.compile_loop([i1, i2], ops, looptoken)
+ self.cpu.compile_loop(None, [i1, i2], ops, looptoken)
buffer = lltype.malloc(rffi.CCHARP.TO, buflen, flavor='raw')
args = [buflen, rffi.cast(lltype.Signed, buffer)]
@@ -2652,7 +2652,7 @@
]
ops[1].setfailargs([])
looptoken = JitCellToken()
- self.cpu.compile_loop([], ops, looptoken)
+ self.cpu.compile_loop(None, [], ops, looptoken)
deadframe = self.cpu.execute_token(looptoken)
fail = self.cpu.get_latest_descr(deadframe)
@@ -2792,7 +2792,7 @@
ops.insert(-1, ResOperation(rop.SAME_AS, [b1],
b1.clonebox()))
looptoken = JitCellToken()
- self.cpu.compile_loop(argboxes, ops, looptoken)
+ self.cpu.compile_loop(None, argboxes, ops, looptoken)
#
seen = []
deadframe = self.cpu.execute_token(looptoken, *argvalues_normal)
@@ -2817,7 +2817,7 @@
]
ops[0].setfailargs([i1])
looptoken = JitCellToken()
- self.cpu.compile_loop([i0, i1], ops, looptoken)
+ self.cpu.compile_loop(None, [i0, i1], ops, looptoken)
deadframe = self.cpu.execute_token(looptoken, -42, 9)
fail = self.cpu.get_latest_descr(deadframe)
@@ -2844,7 +2844,7 @@
ResOperation(rop.FINISH, [i2], None, descr=BasicFinalDescr(3))
]
ops[0].setfailargs([])
- self.cpu.compile_bridge(faildescr, [i2], ops, looptoken)
+ self.cpu.compile_bridge(None, faildescr, [i2], ops, looptoken)
deadframe = self.cpu.execute_token(looptoken, -42, 9)
fail = self.cpu.get_latest_descr(deadframe)
@@ -2877,7 +2877,7 @@
]
ops[0].setfailargs([])
looptoken = JitCellToken()
- self.cpu.compile_loop([i0], ops, looptoken)
+ self.cpu.compile_loop(None, [i0], ops, looptoken)
# mark as failing
self.cpu.invalidate_loop(looptoken)
# attach a bridge
@@ -2885,7 +2885,7 @@
ops2 = [
ResOperation(rop.JUMP, [ConstInt(333)], None, descr=labeldescr),
]
- self.cpu.compile_bridge(faildescr, [], ops2, looptoken)
+ self.cpu.compile_bridge(None, faildescr, [], ops2, looptoken)
# run: must not be caught in an infinite loop
deadframe = self.cpu.execute_token(looptoken, 16)
fail = self.cpu.get_latest_descr(deadframe)
@@ -3093,7 +3093,7 @@
looptoken.outermost_jitdriver_sd = FakeJitDriverSD()
finish_descr = loop.operations[-1].getdescr()
self.cpu.done_with_this_frame_descr_int = BasicFinalDescr()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations, looptoken)
ARGS = [lltype.Signed] * 10
RES = lltype.Signed
FakeJitDriverSD.portal_calldescr = self.cpu.calldescrof(
@@ -3111,7 +3111,7 @@
'''
loop = parse(ops, namespace=locals())
othertoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, othertoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations,
othertoken)
args = [i+1 for i in range(10)]
deadframe = self.cpu.execute_token(othertoken, *args)
assert self.cpu.get_int_value(deadframe, 0) == 13
@@ -3121,7 +3121,7 @@
del called[:]
self.cpu.done_with_this_frame_descr_int = finish_descr
othertoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, othertoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations,
othertoken)
args = [i+1 for i in range(10)]
deadframe = self.cpu.execute_token(othertoken, *args)
assert self.cpu.get_int_value(deadframe, 0) == 97
@@ -3159,7 +3159,7 @@
loop = parse(ops)
looptoken = JitCellToken()
looptoken.outermost_jitdriver_sd = FakeJitDriverSD()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations, looptoken)
ARGS = [lltype.Signed] * 10
RES = lltype.Signed
FakeJitDriverSD.portal_calldescr = self.cpu.calldescrof(
@@ -3173,7 +3173,7 @@
'''
loop = parse(ops, namespace=locals())
othertoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, othertoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations,
othertoken)
deadframe = self.cpu.execute_token(othertoken, sys.maxint - 1)
assert self.cpu.get_int_value(deadframe, 0) == 3
@@ -3211,7 +3211,7 @@
looptoken = JitCellToken()
looptoken.outermost_jitdriver_sd = FakeJitDriverSD()
self.cpu.done_with_this_frame_descr_float = BasicFinalDescr()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations, looptoken)
args = [longlong.getfloatstorage(1.2),
longlong.getfloatstorage(2.3)]
deadframe = self.cpu.execute_token(looptoken, *args)
@@ -3225,7 +3225,7 @@
'''
loop = parse(ops, namespace=locals())
othertoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, othertoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations,
othertoken)
args = [longlong.getfloatstorage(1.2),
longlong.getfloatstorage(3.2)]
deadframe = self.cpu.execute_token(othertoken, *args)
@@ -3237,7 +3237,7 @@
del called[:]
self.cpu.done_with_this_frame_descr_float = finish_descr
othertoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, othertoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations,
othertoken)
args = [longlong.getfloatstorage(1.2),
longlong.getfloatstorage(4.2)]
deadframe = self.cpu.execute_token(othertoken, *args)
@@ -3300,7 +3300,7 @@
looptoken = JitCellToken()
looptoken.outermost_jitdriver_sd = FakeJitDriverSD()
self.cpu.done_with_this_frame_descr_float = BasicFinalDescr()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations, looptoken)
finish_descr = loop.operations[-1].getdescr()
args = [longlong.getfloatstorage(1.25),
longlong.getfloatstorage(2.35)]
@@ -3317,7 +3317,7 @@
'''
loop = parse(ops, namespace=locals())
othertoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, othertoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations,
othertoken)
# normal call_assembler: goes to looptoken
args = [longlong.getfloatstorage(1.25),
@@ -3336,7 +3336,7 @@
loop2 = parse(ops)
looptoken2 = JitCellToken()
looptoken2.outermost_jitdriver_sd = FakeJitDriverSD()
- self.cpu.compile_loop(loop2.inputargs, loop2.operations, looptoken2)
+ self.cpu.compile_loop(None, loop2.inputargs, loop2.operations,
looptoken2)
finish_descr2 = loop2.operations[-1].getdescr()
# install it
@@ -3696,7 +3696,7 @@
]
inputargs = [i0]
looptoken = JitCellToken()
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
# overflowing value:
deadframe = self.cpu.execute_token(looptoken, sys.maxint // 4 + 1)
fail = self.cpu.get_latest_descr(deadframe)
@@ -3749,7 +3749,7 @@
operations[3].setfailargs([i1])
operations[6].setfailargs([i1])
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
deadframe = self.cpu.execute_token(looptoken, 2)
fail = self.cpu.get_latest_descr(deadframe)
assert fail.identifier == 2
@@ -3761,7 +3761,7 @@
ResOperation(rop.INT_SUB, [i0, ConstInt(20)], i2),
ResOperation(rop.JUMP, [i2], None, descr=targettoken2),
]
- self.cpu.compile_bridge(faildescr, inputargs2, operations2, looptoken)
+ self.cpu.compile_bridge(None, faildescr, inputargs2, operations2,
looptoken)
deadframe = self.cpu.execute_token(looptoken, 2)
fail = self.cpu.get_latest_descr(deadframe)
@@ -3778,7 +3778,7 @@
descr = BasicFinalDescr()
loop = parse(ops, self.cpu, namespace=locals())
looptoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations, looptoken)
for inp, outp in [(2,2), (-3, 0)]:
deadframe = self.cpu.execute_token(looptoken, inp)
assert outp == self.cpu.get_int_value(deadframe, 0)
@@ -3807,8 +3807,8 @@
bridge = parse(bridge_ops, self.cpu, namespace=locals())
looptoken = JitCellToken()
self.cpu.assembler.set_debug(False)
- info = self.cpu.compile_loop(loop.inputargs, loop.operations,
looptoken)
- bridge_info = self.cpu.compile_bridge(faildescr, bridge.inputargs,
+ info = self.cpu.compile_loop(None, loop.inputargs, loop.operations,
looptoken)
+ bridge_info = self.cpu.compile_bridge(None, faildescr,
bridge.inputargs,
bridge.operations,
looptoken)
self.cpu.assembler.set_debug(True) # always on untranslated
@@ -3852,7 +3852,7 @@
ResOperation(rop.FINISH, [i0], None, descr=BasicFinalDescr(1234)),
]
operations[1].setfailargs([i0])
- self.cpu.compile_loop(inputargs, operations, looptoken1)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken1)
def func(a, b, c, d, e, f, g, h, i):
assert a + 2 == b
@@ -3906,14 +3906,14 @@
ResOperation(rop.JUMP, [i19], None, descr=targettoken1),
]
operations2[-2].setfailargs([])
- self.cpu.compile_bridge(faildescr1, inputargs, operations2, looptoken1)
+ self.cpu.compile_bridge(None, faildescr1, inputargs, operations2,
looptoken1)
looptoken2 = JitCellToken()
inputargs = [BoxInt()]
operations3 = [
ResOperation(rop.JUMP, [ConstInt(0)], None, descr=targettoken1),
]
- self.cpu.compile_loop(inputargs, operations3, looptoken2)
+ self.cpu.compile_loop(None, inputargs, operations3, looptoken2)
deadframe = self.cpu.execute_token(looptoken2, -9)
fail = self.cpu.get_latest_descr(deadframe)
@@ -3930,11 +3930,11 @@
operations[0].setfailargs([])
looptoken = JitCellToken()
inputargs = [t_box]
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
operations = [
ResOperation(rop.FINISH, [], None, descr=BasicFinalDescr(99))
]
- self.cpu.compile_bridge(faildescr, [], operations, looptoken)
+ self.cpu.compile_bridge(None, faildescr, [], operations, looptoken)
deadframe = self.cpu.execute_token(looptoken, null_box.getref_base())
fail = self.cpu.get_latest_descr(deadframe)
assert fail.identifier == 99
@@ -3962,7 +3962,7 @@
#
loop = parse(ops, self.cpu, namespace=locals())
looptoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations,
looptoken)
deadframe = self.cpu.execute_token(looptoken,
rffi.cast(lltype.Signed, p), 16)
result = self.cpu.get_int_value(deadframe, 0)
@@ -3992,7 +3992,7 @@
#
loop = parse(ops, self.cpu, namespace=locals())
looptoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations,
looptoken)
deadframe = self.cpu.execute_token(looptoken,
rffi.cast(lltype.Signed, p), 16)
result = self.cpu.get_float_value(deadframe, 0)
@@ -4022,7 +4022,7 @@
#
loop = parse(ops, self.cpu, namespace=locals())
looptoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations,
looptoken)
deadframe = self.cpu.execute_token(looptoken,
rffi.cast(lltype.Signed, p), 16)
result = self.cpu.get_int_value(deadframe, 0)
@@ -4054,7 +4054,7 @@
p[i] = '\xDD'
loop = parse(ops, self.cpu, namespace=locals())
looptoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations,
looptoken)
self.cpu.execute_token(looptoken,
rffi.cast(lltype.Signed, p), 16, value)
result = rawstorage.raw_storage_getitem(T, p, 16)
@@ -4086,7 +4086,7 @@
p[i] = '\xDD'
loop = parse(ops, self.cpu, namespace=locals())
looptoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations,
looptoken)
self.cpu.execute_token(looptoken,
rffi.cast(lltype.Signed, p), 16,
longlong.getfloatstorage(value))
@@ -4120,7 +4120,7 @@
p[i] = '\xDD'
loop = parse(ops, self.cpu, namespace=locals())
looptoken = JitCellToken()
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations,
looptoken)
self.cpu.execute_token(looptoken,
rffi.cast(lltype.Signed, p), 16,
longlong.singlefloat2int(value))
@@ -4155,7 +4155,7 @@
]
ops[2].setfailargs([i2])
looptoken = JitCellToken()
- self.cpu.compile_loop([i0, i1], ops, looptoken)
+ self.cpu.compile_loop(None, [i0, i1], ops, looptoken)
deadframe = self.cpu.execute_token(looptoken, 20, 0)
fail = self.cpu.get_latest_descr(deadframe)
assert fail.identifier == 23
@@ -4189,7 +4189,7 @@
finish(i1, descr=finaldescr)
""", namespace={'finaldescr': finaldescr, 'calldescr2': calldescr2,
'guarddescr': guarddescr, 'func2_ptr': func2_ptr})
- self.cpu.compile_bridge(faildescr, bridge.inputargs,
+ self.cpu.compile_bridge(None, faildescr, bridge.inputargs,
bridge.operations, looptoken)
cpu = self.cpu
@@ -4222,7 +4222,7 @@
guard_true(i0, descr=faildescr) [i1, i2, px]
finish(i2, descr=finaldescr2)
""", namespace=locals())
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations, looptoken)
frame = self.cpu.execute_token(looptoken, 0, 0, 3)
assert self.cpu.get_latest_descr(frame) is guarddescr
from rpython.jit.backend.llsupport.llmodel import AbstractLLCPU
@@ -4271,7 +4271,7 @@
'faildescr2': BasicFailDescr(1),
'xtp': xtp
})
- self.cpu.compile_bridge(faildescr, bridge.inputargs,
+ self.cpu.compile_bridge(None, faildescr, bridge.inputargs,
bridge.operations, looptoken)
raise LLException(xtp, xptr)
@@ -4292,7 +4292,7 @@
'faildescr': faildescr,
'finaldescr2': BasicFinalDescr(1)})
- self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+ self.cpu.compile_loop(None, loop.inputargs, loop.operations, looptoken)
frame = self.cpu.execute_token(looptoken, 1, 2, 3)
descr = self.cpu.get_latest_descr(frame)
assert descr.identifier == 42
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
@@ -434,7 +434,8 @@
else:
self.wb_slowpath[withcards + 2 * withfloats] = rawstart
- def assemble_loop(self, loopname, inputargs, operations, looptoken, log):
+ def assemble_loop(self, logger, loopname, inputargs, operations, looptoken,
+ log):
'''adds the following attributes to looptoken:
_ll_function_addr (address of the generated func, as an int)
_ll_loop_code (debug: addr of the start of the ResOps)
@@ -467,8 +468,8 @@
#
self._call_header_with_stack_check()
self._check_frame_depth_debug(self.mc)
- operations = regalloc.prepare_loop(inputargs, operations, looptoken,
- clt.allgcrefs)
+ operations = regalloc.prepare_loop(inputargs, operations,
+ looptoken, clt.allgcrefs)
looppos = self.mc.get_relative_pos()
frame_depth_no_fixed_size = self._assemble(regalloc, inputargs,
operations)
@@ -498,6 +499,9 @@
looptoken._x86_fullsize = full_size
looptoken._x86_ops_offset = ops_offset
looptoken._ll_function_addr = rawstart
+ if logger:
+ logger.log_loop(inputargs, operations, 0, "rewritten",
+ name=loopname, ops_offset=ops_offset)
self.fixup_target_tokens(rawstart)
self.teardown()
@@ -509,7 +513,7 @@
return AsmInfo(ops_offset, rawstart + looppos,
size_excluding_failure_stuff - looppos)
- def assemble_bridge(self, faildescr, inputargs, operations,
+ def assemble_bridge(self, logger, faildescr, inputargs, operations,
original_loop_token, log):
if not we_are_translated():
# Arguments should be unique
@@ -544,6 +548,9 @@
ops_offset = self.mc.ops_offset
frame_depth = max(self.current_clt.frame_info.jfi_frame_depth,
frame_depth_no_fixed_size + JITFRAME_FIXED_SIZE)
+ if logger:
+ logger.log_bridge(inputargs, operations, "rewritten",
+ ops_offset=ops_offset)
self.fixup_target_tokens(rawstart)
self.update_frame_depth(frame_depth)
self.teardown()
diff --git a/rpython/jit/backend/x86/runner.py
b/rpython/jit/backend/x86/runner.py
--- a/rpython/jit/backend/x86/runner.py
+++ b/rpython/jit/backend/x86/runner.py
@@ -88,15 +88,17 @@
lines = machine_code_dump(data, addr, self.backend_name, label_list)
print ''.join(lines)
- def compile_loop(self, inputargs, operations, looptoken, log=True,
name=''):
- return self.assembler.assemble_loop(name, inputargs, operations,
+ def compile_loop(self, logger, inputargs, operations, looptoken, log=True,
+ name=''):
+ return self.assembler.assemble_loop(logger, name, inputargs,
operations,
looptoken, log=log)
- def compile_bridge(self, faildescr, inputargs, operations,
+ def compile_bridge(self, logger, faildescr, inputargs, operations,
original_loop_token, log=True):
clt = original_loop_token.compiled_loop_token
clt.compiling_a_bridge()
- return self.assembler.assemble_bridge(faildescr, inputargs, operations,
+ return self.assembler.assemble_bridge(logger, faildescr, inputargs,
+ operations,
original_loop_token, log=log)
def clear_latest_values(self, count):
diff --git a/rpython/jit/backend/x86/test/test_runner.py
b/rpython/jit/backend/x86/test/test_runner.py
--- a/rpython/jit/backend/x86/test/test_runner.py
+++ b/rpython/jit/backend/x86/test/test_runner.py
@@ -287,7 +287,7 @@
]
ops[-2].setfailargs([i1])
looptoken = JitCellToken()
- self.cpu.compile_loop([b], ops, looptoken)
+ self.cpu.compile_loop(None, [b], ops, looptoken)
deadframe = self.cpu.execute_token(looptoken, b.value)
result = self.cpu.get_int_value(deadframe, 0)
if guard == rop.GUARD_FALSE:
@@ -333,7 +333,7 @@
ops[-2].setfailargs([i1])
inputargs = [i for i in (a, b) if isinstance(i, Box)]
looptoken = JitCellToken()
- self.cpu.compile_loop(inputargs, ops, looptoken)
+ self.cpu.compile_loop(None, inputargs, ops, looptoken)
inputvalues = [box.value for box in inputargs]
deadframe = self.cpu.execute_token(looptoken, *inputvalues)
result = self.cpu.get_int_value(deadframe, 0)
@@ -377,7 +377,7 @@
]
inputargs = [i0]
operations[-2].setfailargs([i1])
- self.cpu.compile_loop(inputargs, operations, looptoken)
+ self.cpu.compile_loop(None, inputargs, operations, looptoken)
name, loopaddress, loopsize = agent.functions[0]
assert name == "Loop # 17: hello (loop counter 0)"
assert loopaddress <= looptoken._ll_loop_code
@@ -393,7 +393,7 @@
]
bridge[1].setfailargs([i1b])
- self.cpu.compile_bridge(faildescr1, [i1b], bridge, looptoken)
+ self.cpu.compile_bridge(None, faildescr1, [i1b], bridge, looptoken)
name, address, size = agent.functions[1]
assert name == "Bridge # 0: bye (loop counter 1)"
# Would be exactly ==, but there are some guard failure recovery
@@ -422,7 +422,7 @@
]
inputargs = [i0]
debug._log = dlog = debug.DebugLog()
- info = self.cpu.compile_loop(inputargs, operations, looptoken)
+ info = self.cpu.compile_loop(None, inputargs, operations, looptoken)
ops_offset = info.ops_offset
debug._log = None
#
@@ -508,7 +508,7 @@
ops[5].setfailargs([])
ops[7].setfailargs([])
looptoken = JitCellToken()
- self.cpu.compile_loop([i1, i2], ops, looptoken)
+ self.cpu.compile_loop(None, [i1, i2], ops, looptoken)
deadframe = self.cpu.execute_token(looptoken, 123450, 123408)
fail = self.cpu.get_latest_descr(deadframe)
@@ -549,7 +549,7 @@
try:
self.cpu.assembler.set_debug(True)
looptoken = JitCellToken()
- self.cpu.compile_loop(ops.inputargs, ops.operations, looptoken)
+ self.cpu.compile_loop(None, ops.inputargs, ops.operations,
looptoken)
self.cpu.execute_token(looptoken, 0)
# check debugging info
struct = self.cpu.assembler.loop_run_counters[0]
diff --git a/rpython/jit/metainterp/compile.py
b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -302,14 +302,16 @@
log=True, name=''):
metainterp_sd.logger_ops.log_loop(inputargs, operations, -2,
'compiling', name=name)
- return metainterp_sd.cpu.compile_loop(inputargs, operations, looptoken,
+ return metainterp_sd.cpu.compile_loop(metainterp_sd.logger_ops,
+ inputargs, operations, looptoken,
log=log, name=name)
def do_compile_bridge(metainterp_sd, faildescr, inputargs, operations,
original_loop_token, log=True):
metainterp_sd.logger_ops.log_bridge(inputargs, operations, "compiling")
assert isinstance(faildescr, AbstractFailDescr)
- return metainterp_sd.cpu.compile_bridge(faildescr, inputargs, operations,
+ return metainterp_sd.cpu.compile_bridge(metainterp_sd.logger_ops,
+ faildescr, inputargs, operations,
original_loop_token, log=log)
def send_loop_to_backend(greenkey, jitdriver_sd, metainterp_sd, loop, type):
diff --git a/rpython/jit/metainterp/logger.py b/rpython/jit/metainterp/logger.py
--- a/rpython/jit/metainterp/logger.py
+++ b/rpython/jit/metainterp/logger.py
@@ -17,6 +17,10 @@
debug_start("jit-log-noopt-loop")
logops = self._log_operations(inputargs, operations, ops_offset)
debug_stop("jit-log-noopt-loop")
+ elif type == "rewritten":
+ debug_start("jit-log-rewritten-loop")
+ logops = self._log_operations(inputargs, operations, ops_offset)
+ debug_stop("jit-log-rewritten-loop")
elif number == -2:
debug_start("jit-log-compiling-loop")
logops = self._log_operations(inputargs, operations, ops_offset)
@@ -35,6 +39,10 @@
debug_start("jit-log-noopt-bridge")
logops = self._log_operations(inputargs, operations, ops_offset)
debug_stop("jit-log-noopt-bridge")
+ elif extra == "rewritten":
+ debug_start("jit-log-rewritten-bridge")
+ logops = self._log_operations(inputargs, operations, ops_offset)
+ debug_stop("jit-log-rewritten-bridge")
elif extra == "compiling":
debug_start("jit-log-compiling-bridge")
logops = self._log_operations(inputargs, operations, ops_offset)
diff --git a/rpython/jit/metainterp/optimizeopt/pure.py
b/rpython/jit/metainterp/optimizeopt/pure.py
--- a/rpython/jit/metainterp/optimizeopt/pure.py
+++ b/rpython/jit/metainterp/optimizeopt/pure.py
@@ -52,7 +52,7 @@
# otherwise, the operation remains
self.emit_operation(op)
if op.returns_bool_result():
- self.optimizer.bool_boxes[self.getvalue(op.result)] = None
+ self.optimizer.bool_boxes[self.getvalue(op.result)] = None
if nextop:
self.emit_operation(nextop)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit