[pypy-commit] pypy optresult-unroll: write enough to pass the test, maybe we want to jump to preamble instead
fijal
noreply at buildbot.pypy.org
Thu Sep 3 20:31:00 CEST 2015
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult-unroll
Changeset: r79403:319cea2b97b0
Date: 2015-09-03 20:31 +0200
http://bitbucket.org/pypy/pypy/changeset/319cea2b97b0/
Log: write enough to pass the test, maybe we want to jump to preamble
instead
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
@@ -339,8 +339,7 @@
loop_info, loop_ops = optimize_trace(metainterp_sd, jitdriver_sd,
loop_data)
except InvalidLoop:
- raise Exception("think about it")
- xxx
+ return None
# Fall back on jumping directly to preamble
jump_op = ResOperation(rop.JUMP, inputargs[:],
descr=loop_jitcell_token.target_tokens[0])
@@ -1004,13 +1003,9 @@
#
# Attempt to use optimize_bridge(). This may return None in case
# it does not work -- i.e. none of the existing old_loop_tokens match.
- #new_trace = create_empty_loop(metainterp)
- #new_trace.inputargs = metainterp.history.inputargs[:]
-
- #new_trace.operations = metainterp.history.operations[:]
+
metainterp_sd = metainterp.staticdata
jitdriver_sd = metainterp.jitdriver_sd
- state = jitdriver_sd.warmstate
if isinstance(resumekey, ResumeAtPositionDescr):
inline_short_preamble = False
else:
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
@@ -9,7 +9,7 @@
Optimization, LoopInfo, MININT, MAXINT
from rpython.jit.metainterp.optimizeopt.vstring import StrPtrInfo
from rpython.jit.metainterp.optimizeopt.virtualstate import (
- VirtualStateConstructor, VirtualStatesCantMatch)
+ VirtualStateConstructor, VirtualStatesCantMatch, BadVirtualState)
from rpython.jit.metainterp.resoperation import rop, ResOperation, GuardResOp
from rpython.jit.metainterp import compile
from rpython.rlib.debug import debug_print
@@ -142,11 +142,14 @@
state.virtual_state,
celltoken.target_tokens)
# force the boxes for virtual state to match
- args = target_virtual_state.make_inputargs(
- [self.get_box_replacement(x) for x in end_jump.getarglist()],
- self.optimizer, force_boxes=True)
- for arg in args:
- self.optimizer.force_box(arg)
+ try:
+ args = target_virtual_state.make_inputargs(
+ [self.get_box_replacement(x) for x in end_jump.getarglist()],
+ self.optimizer, force_boxes=True)
+ for arg in args:
+ self.optimizer.force_box(arg)
+ except BadVirtualState:
+ raise InvalidLoop
extra_same_as = self.short_preamble_producer.extra_same_as[:]
target_token = self.finalize_short_preamble(label_op,
state.virtual_state)
More information about the pypy-commit
mailing list