[pypy-commit] pypy default: Argh. Turning "try: list[index]; except IndexError" into "try:
arigo
noreply at buildbot.pypy.org
Tue Jul 30 20:10:52 CEST 2013
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r65823:1e4a202133e5
Date: 2013-07-30 20:09 +0200
http://bitbucket.org/pypy/pypy/changeset/1e4a202133e5/
Log: Argh. Turning "try: list[index]; except IndexError" into "try:
method(index); except IndexError" just doesn't work in RPython after
translation. Grrr.
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
@@ -195,11 +195,10 @@
raise BadVirtualState
if not value.is_virtual():
raise BadVirtualState
+ if len(self.fieldstate) > value.getlength():
+ raise BadVirtualState
for i in range(len(self.fieldstate)):
- try:
- v = value.get_item_value(i)
- except IndexError:
- raise BadVirtualState
+ v = value.get_item_value(i)
s = self.fieldstate[i]
if s.position > self.position:
s.enum_forced_boxes(boxes, v, optimizer)
@@ -269,13 +268,13 @@
raise BadVirtualState
if not value.is_virtual():
raise BadVirtualState
+ if len(self.fielddescrs) > len(value._items):
+ raise BadVirtualState
p = 0
for i in range(len(self.fielddescrs)):
for j in range(len(self.fielddescrs[i])):
try:
v = value._items[i][self.fielddescrs[i][j]]
- except IndexError:
- raise BadVirtualState
except KeyError:
raise BadVirtualState
s = self.fieldstate[p]
More information about the pypy-commit
mailing list