Author: Maciej Fijalkowski <fij...@gmail.com>
Branch: optresult
Changeset: r77752:0308c512080c
Date: 2015-06-02 10:31 +0200
http://bitbucket.org/pypy/pypy/changeset/0308c512080c/

Log:    fix RECORD_KNOWN_CLASS

diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py 
b/rpython/jit/metainterp/optimizeopt/rewrite.py
--- a/rpython/jit/metainterp/optimizeopt/rewrite.py
+++ b/rpython/jit/metainterp/optimizeopt/rewrite.py
@@ -345,14 +345,15 @@
         self.optimize_guard(op, CONST_0)
 
     def optimize_RECORD_KNOWN_CLASS(self, op):
-        value = self.getvalue(op.getarg(0))
+        opinfo = self.getptrinfo(op.getarg(0))
         expectedclassbox = op.getarg(1)
         assert isinstance(expectedclassbox, Const)
-        realclassbox = value.get_constant_class(self.optimizer.cpu)
-        if realclassbox is not None:
-            assert realclassbox.same_constant(expectedclassbox)
-            return
-        value.make_constant_class(None, expectedclassbox)
+        if opinfo is not None:
+            realclassbox = opinfo.get_known_class(self.optimizer.cpu)
+            if realclassbox is not None:
+                assert realclassbox.same_constant(expectedclassbox)
+                return
+        self.make_constant_class(op.getarg(0), expectedclassbox)
 
     def optimize_GUARD_CLASS(self, op):
         expectedclassbox = op.getarg(1)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to