Author: Maciej Fijalkowski <fij...@gmail.com> 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 pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit