[pypy-commit] pypy optresult-unroll: cleanup a bit
fijal
noreply at buildbot.pypy.org
Mon Aug 31 18:58:26 CEST 2015
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult-unroll
Changeset: r79323:256f5d6b85c3
Date: 2015-08-31 18:43 +0200
http://bitbucket.org/pypy/pypy/changeset/256f5d6b85c3/
Log: cleanup a bit
diff --git a/rpython/jit/metainterp/optimizeopt/shortpreamble.py b/rpython/jit/metainterp/optimizeopt/shortpreamble.py
--- a/rpython/jit/metainterp/optimizeopt/shortpreamble.py
+++ b/rpython/jit/metainterp/optimizeopt/shortpreamble.py
@@ -418,4 +418,5 @@
return [label_op] + self.short + [jump_op]
class ExtendedShortPreambleBuilder(AbstractShortPreambleBuilder):
- pass
+ def __init__(self, sb):
+ self.sb = sb
diff --git a/rpython/jit/metainterp/optimizeopt/unroll.py b/rpython/jit/metainterp/optimizeopt/unroll.py
--- a/rpython/jit/metainterp/optimizeopt/unroll.py
+++ b/rpython/jit/metainterp/optimizeopt/unroll.py
@@ -1,5 +1,4 @@
-import sys
from rpython.jit.metainterp.history import Const, TargetToken, JitCellToken
from rpython.jit.metainterp.optimizeopt.shortpreamble import ShortBoxes,\
ShortPreambleBuilder, ExtendedShortPreambleBuilder, PreambleOp
@@ -199,7 +198,7 @@
target_token.virtual_state = virtual_state
target_token.short_preamble = short_preamble
jitcelltoken.target_tokens.append(target_token)
- self.short_preamble_producer = None # ExtendedShortPreambleBuilder()
+ self.short_preamble_producer = ExtendedShortPreambleBuilder(sb)
label_op.initarglist(label_op.getarglist() + sb.used_boxes)
return target_token
@@ -232,25 +231,24 @@
self.send_extra_operation(guard)
except VirtualStatesCantMatch:
continue
- pass_to_short = target_virtual_state.make_inputargs(args,
- self.optimizer, append_virtuals=True)
- args = target_virtual_state.make_inputargs(args,
- self.optimizer)
+ args, virtuals = target_virtual_state.make_inputargs_and_virtuals(
+ args, self.optimizer)
short_preamble = target_token.short_preamble
- lgt = len(short_preamble) - 1
- assert lgt >= 0
- extra = self.inline_short_preamble(pass_to_short, args,
- short_preamble[0].getarglist(), short_preamble[1:lgt],
- short_preamble[-1].getarglist(), self.optimizer.patchguardop)
+ extra = self.inline_short_preamble(args + virtuals, args,
+ short_preamble, self.optimizer.patchguardop)
self.send_extra_operation(jump_op.copy_and_change(rop.JUMP,
args=args + extra,
descr=target_token))
return None # explicit because the return can be non-None
return virtual_state
- def inline_short_preamble(self, jump_args, args_no_virtuals,
- short_inputargs, short_ops,
- short_jump_op, patchguardop):
+ def inline_short_preamble(self, jump_args, args_no_virtuals, short,
+ patchguardop):
+ short_inputargs = short[0].getarglist()
+ short_jump_op = short[-1].getarglist()
+ lgt = len(short) - 1
+ assert lgt >= 0
+ short_ops = short[1:lgt]
try:
self._check_no_forwarding([short_inputargs, short_ops], False)
assert len(short_inputargs) == len(jump_args)
@@ -284,15 +282,14 @@
infos = {}
for arg in end_args:
infos[arg] = self.optimizer.getinfo(arg)
- label_args = virtual_state.make_inputargs(end_args, self.optimizer)
+ label_args, virtuals = virtual_state.make_inputargs_and_virtuals(
+ end_args, self.optimizer)
for arg in label_args:
infos[arg] = self.optimizer.getinfo(arg)
sb = ShortBoxes()
- label_args_plus_virtuals = virtual_state.make_inputargs(end_args,
- self.optimizer, append_virtuals=True)
short_boxes = sb.create_short_boxes(self.optimizer, renamed_inputargs,
- label_args_plus_virtuals)
- short_inputargs = sb.create_short_inputargs(label_args_plus_virtuals)
+ label_args + virtuals)
+ short_inputargs = sb.create_short_inputargs(label_args + virtuals)
for produced_op in short_boxes:
op = produced_op.short_op.res
if not isinstance(op, Const):
diff --git a/rpython/jit/metainterp/optimizeopt/virtualstate.py b/rpython/jit/metainterp/optimizeopt/virtualstate.py
--- a/rpython/jit/metainterp/optimizeopt/virtualstate.py
+++ b/rpython/jit/metainterp/optimizeopt/virtualstate.py
@@ -572,8 +572,7 @@
runtime_boxes[i], state)
return state
- def make_inputargs(self, inputargs, optimizer, force_boxes=False,
- append_virtuals=False):
+ def make_inputargs(self, inputargs, optimizer, force_boxes=False):
if optimizer.optearlyforce:
optimizer = optimizer.optearlyforce
assert len(inputargs) == len(self.state)
@@ -589,15 +588,19 @@
for i in range(len(inputargs)):
self.state[i].enum_forced_boxes(boxes, inputargs[i], optimizer)
- if append_virtuals:
- # we append the virtuals here in case some stuff is proven
- # to be not a virtual and there are getfields in the short preamble
- # that will read items out of there
- for i in range(len(inputargs)):
- if not isinstance(self.state[i], NotVirtualStateInfo):
- boxes.append(inputargs[i])
+ return boxes
+
+ def make_inputargs_and_virtuals(self, inputargs, optimizer):
+ inpargs = self.make_inputargs(inputargs, optimizer)
+ # we append the virtuals here in case some stuff is proven
+ # to be not a virtual and there are getfields in the short preamble
+ # that will read items out of there
+ virtuals = []
+ for i in range(len(inputargs)):
+ if not isinstance(self.state[i], NotVirtualStateInfo):
+ virtuals.append(inputargs[i])
- return boxes
+ return inpargs, virtuals
def debug_print(self, hdr='', bad=None, metainterp_sd=None):
if bad is None:
diff --git a/rpython/jit/tool/oparser.py b/rpython/jit/tool/oparser.py
--- a/rpython/jit/tool/oparser.py
+++ b/rpython/jit/tool/oparser.py
@@ -325,7 +325,7 @@
def parse_op_no_result(self, line):
opnum, args, descr, fail_args = self.parse_op(line)
- res = self.create_op_no_result(opnum, args, descr, fail_args)
+ res = self.create_op(opnum, args, None, descr, fail_args)
return res
def parse_next_op(self, line):
More information about the pypy-commit
mailing list