Author: Armin Rigo <[email protected]>
Branch: release-2.1.x
Changeset: r65831:a5db735cb628
Date: 2013-07-30 20:09 +0200
http://bitbucket.org/pypy/pypy/changeset/a5db735cb628/
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]
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit