[pypy-commit] pypy optresult-unroll: fix virtual_ref optimization

fijal noreply at buildbot.pypy.org
Tue Sep 1 23:11:31 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult-unroll
Changeset: r79366:04e67e43db5a
Date: 2015-09-01 23:11 +0200
http://bitbucket.org/pypy/pypy/changeset/04e67e43db5a/

Log:	fix virtual_ref optimization

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
@@ -160,10 +160,11 @@
                 return False
             tokeninfo = self.getptrinfo(tokenop)
             if (tokeninfo is not None and tokeninfo.is_constant() and
-                    not tokeninfo.is_null()):
-                forcedvalue = vref.getfield(vrefinfo.descr_forced, None)
-                if forcedvalue is not None and not forcedvalue.is_null():
-                    self.make_equal_to(op, forcedvalue)
+                    not tokeninfo.is_nonnull()):
+                forcedop = vref.getfield(vrefinfo.descr_forced, None)
+                forcedinfo = self.getptrinfo(forcedop)
+                if forcedinfo is not None and not forcedinfo.is_null():
+                    self.make_equal_to(op, forcedop)
                     self.last_emitted_operation = REMOVED
                     return True
         return False


More information about the pypy-commit mailing list