Author: Maciej Fijalkowski <[email protected]>
Branch: optresult-unroll
Changeset: r79494:91248376cc45
Date: 2015-09-07 09:37 +0200
http://bitbucket.org/pypy/pypy/changeset/91248376cc45/

Log:    be a bit more robust about missing fieldstate

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
@@ -164,6 +164,8 @@
                 fieldbox = None
                 fieldbox_runtime = None
             if self.fieldstate[i] is not None:
+                if other.fieldstate[i] is None:
+                    raise VirtualStatesCantMatch
                 self.fieldstate[i].generate_guards(other.fieldstate[i],
                                                    fieldbox,
                                                    fieldbox_runtime, state)
@@ -244,7 +246,10 @@
                 fieldbox = opinfo._items[i]
                 fieldbox_runtime = state.get_runtime_item(runtime_box,
                                             self.arraydescr, i)
-            self.fieldstate[i].generate_guards(other.fieldstate[i],
+            if self.fieldstate[i] is not None:
+                if other.fieldstate[i] is None:
+                    raise VirtualStatesCantMatch
+                self.fieldstate[i].generate_guards(other.fieldstate[i],
                                             fieldbox, fieldbox_runtime, state)
 
     def enum_forced_boxes(self, boxes, box, optimizer, force_boxes=False):
@@ -303,6 +308,8 @@
                 fieldstate = self.fieldstate[index]
                 if fieldstate is None:
                     continue
+                if other.fieldstate[index] is None:
+                    raise VirtualStatesCantMatch
                 if box is not None and opinfo is not None:
                     fieldbox = opinfo._items[index]
                     fieldbox_runtime = state.get_runtime_interiorfield(
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to