Author: Maciej Fijalkowski <fij...@gmail.com> Branch: optresult-unroll Changeset: r79100:a94e875aab50 Date: 2015-08-21 12:39 +0200 http://bitbucket.org/pypy/pypy/changeset/a94e875aab50/
Log: hack at another test 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 @@ -199,6 +199,39 @@ # ____________________________________________________________ +def compile_simple_loop(metainterp, greenkey, start, inputargs, ops, jumpargs, + enable_opts): + from rpython.jit.metainterp.optimizeopt import optimize_trace + + jitdriver_sd = metainterp.jitdriver_sd + metainterp_sd = metainterp.staticdata + jitcell_token = make_jitcell_token(jitdriver_sd) + label = ResOperation(rop.LABEL, inputargs[:], descr=jitcell_token) + jump_op = ResOperation(rop.JUMP, jumpargs[:], descr=jitcell_token) + call_pure_results = metainterp.call_pure_results + data = SimpleCompileData(label, ops + [jump_op], + call_pure_results=call_pure_results, + enable_opts=enable_opts) + try: + loop_info, ops = optimize_trace(metainterp_sd, jitdriver_sd, + data) + except InvalidLoop: + return None + loop = create_empty_loop(metainterp) + loop.original_jitcell_token = jitcell_token + loop.inputargs = loop_info.inputargs + jump_op = ops[-1] + target_token = TargetToken(jitcell_token) + target_token.original_jitcell_token = jitcell_token + label.setdescr(target_token) + jump_op.setdescr(target_token) + loop.operations = [label] + ops + loop.check_consistency() + jitcell_token.target_tokens = [target_token] + send_loop_to_backend(greenkey, jitdriver_sd, metainterp_sd, loop, "loop") + record_loop_or_bridge(metainterp_sd, loop) + return target_token + def compile_loop(metainterp, greenkey, start, inputargs, jumpargs, full_preamble_needed=True, try_disabling_unroll=False): """Try to compile a new procedure by closing the current history back @@ -217,12 +250,14 @@ enable_opts = enable_opts.copy() del enable_opts['unroll'] + ops = history.operations[start:] + if 'unroll' not in enable_opts: + return compile_simple_loop(metainterp, greenkey, start, inputargs, ops, + jumpargs, enable_opts) jitcell_token = make_jitcell_token(jitdriver_sd) - h_ops = history.operations label = ResOperation(rop.LABEL, inputargs, descr=TargetToken(jitcell_token)) end_label = ResOperation(rop.LABEL, jumpargs, descr=jitcell_token) - ops = h_ops[start:] call_pure_results = metainterp.call_pure_results preamble_data = LoopCompileData(label, end_label, ops, call_pure_results=call_pure_results, _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit