[pypy-commit] pypy value-classes: Get simple test working

sbauman pypy.commits at gmail.com
Tue Sep 27 14:13:27 EDT 2016


Author: Spenser Bauman <sabauma at gmail.com>
Branch: value-classes
Changeset: r87419:afd1c22c477e
Date: 2016-09-27 14:12 -0400
http://bitbucket.org/pypy/pypy/changeset/afd1c22c477e/

Log:	Get simple test working

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
@@ -337,7 +337,7 @@
             try:
                 args, virtuals = target_virtual_state.make_inputargs_and_virtuals(
                     args, self.optimizer, force_boxes=force_boxes)
-            except VirtualStatesCantMatch as e:
+            except VirtualStatesCantMatch:
                 assert force_boxes
                 virtual_state = self.get_virtual_state(args)
                 continue
diff --git a/rpython/jit/metainterp/optimizeopt/virtualize.py b/rpython/jit/metainterp/optimizeopt/virtualize.py
--- a/rpython/jit/metainterp/optimizeopt/virtualize.py
+++ b/rpython/jit/metainterp/optimizeopt/virtualize.py
@@ -15,7 +15,7 @@
     _last_guard_not_forced_2 = None
 
     def setup(self):
-        self.optimizer.optheap = self
+        self.optimizer.optvirtualize = self
 
     def make_virtual(self, known_class, source_op, descr):
         opinfo = info.InstancePtrInfo(descr, known_class, is_virtual=True)
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
@@ -222,14 +222,12 @@
                     self, boxes, box, optimizer, force_boxes)
 
         optvirtualize = optimizer.optimizer.optvirtualize
-        if optvirtualize is None:
-            raise VirtualStatesCantMatch()
-
+        assert optvirtualize is not None
         assert isinstance(info, AbstractStructPtrInfo)
 
         newop = optvirtualize.make_virtual(self.known_class, box, self.typedescr)
         newop._fields = info._fields[:]
-        for i in range(min(len(self.fielddescrs, len(info._fields)))):
+        for i in range(min(len(self.fielddescrs), len(info._fields))):
             state = self.fieldstate[i]
             if state is None:
                 continue
@@ -250,7 +248,7 @@
         if not known_class.is_value_class():
             raise VirtualStatesCantMatch("different kinds of structs")
 
-        raise VirtualStatesCantMatch("different kinds of structs")
+        # raise VirtualStatesCantMatch("different kinds of structs")
         # TODO: Probably should rename state.extra_guards to extra_ops
         extra_guards = state.extra_guards
         cpu = state.cpu
@@ -260,7 +258,7 @@
         if other.level == LEVEL_UNKNOWN:
             op = ResOperation(rop.GUARD_NONNULL_CLASS, [box, self.known_class])
             extra_guards.append(op)
-        elif other.level == LEVEL_NONULL:
+        elif other.level == LEVEL_NONNULL:
             op = ResOperation(rop.GUARD_CLASS, [box, self.known_class])
             extra_guards.append(op)
         elif other.level == LEVEL_KNOWNCLASS:


More information about the pypy-commit mailing list