[pypy-commit] pypy optresult-unroll: progress

fijal noreply at buildbot.pypy.org
Thu Sep 3 18:34:51 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult-unroll
Changeset: r79392:80aff6489027
Date: 2015-09-03 18:17 +0200
http://bitbucket.org/pypy/pypy/changeset/80aff6489027/

Log:	progress

diff --git a/rpython/jit/metainterp/optimizeopt/info.py b/rpython/jit/metainterp/optimizeopt/info.py
--- a/rpython/jit/metainterp/optimizeopt/info.py
+++ b/rpython/jit/metainterp/optimizeopt/info.py
@@ -289,9 +289,17 @@
 
     def make_guards(self, op, short):
         if self._known_class is not None:
-            op = ResOperation(rop.GUARD_NONNULL_CLASS, [op, self._known_class],
-                              None)
-            short.append(op)
+            short.extend([
+                ResOperation(rop.GUARD_NONNULL, [op], None),
+                ResOperation(rop.GUARD_IS_OBJECT, [op], None),
+                ResOperation(rop.GUARD_CLASS, [op, self._known_class], None)
+                ])
+        elif self.descr is not None:
+            short.extend([
+                ResOperation(rop.GUARD_NONNULL, [op], None),
+                ResOperation(rop.GUARD_IS_OBJECT, [op], None),
+                xx
+                ])
         else:
             AbstractStructPtrInfo.make_guards(self, op, short)
 
@@ -300,6 +308,9 @@
         self.descr = descr
         self._is_virtual = is_virtual
 
+    def make_guards(self, op, short):
+        xxx
+
     @specialize.argtype(1)
     def visitor_dispatch_virtual_type(self, visitor):
         fielddescrs = self.descr.get_all_fielddescrs()
diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -94,7 +94,7 @@
                 last_guard_pos = opinfo.get_last_guard_pos()
             else:
                 last_guard_pos = -1
-            opinfo = info.InstancePtrInfo(class_const)
+            opinfo = info.InstancePtrInfo(None, class_const)
             opinfo.last_guard_pos = last_guard_pos
             op.set_forwarded(opinfo)
         if update_last_guard:


More information about the pypy-commit mailing list