[pypy-svn] pypy jit-virtual_state: support for forced virtuals

hakanardo commits-noreply at bitbucket.org
Sat Feb 5 11:39:58 CET 2011


Author: Hakan Ardo <hakan at debian.org>
Branch: jit-virtual_state
Changeset: r41624:a333f1a9c94e
Date: 2011-02-05 09:21 +0100
http://bitbucket.org/pypy/pypy/changeset/a333f1a9c94e/

Log:	support for forced virtuals

diff --git a/pypy/jit/metainterp/optimizeopt/unroll.py b/pypy/jit/metainterp/optimizeopt/unroll.py
--- a/pypy/jit/metainterp/optimizeopt/unroll.py
+++ b/pypy/jit/metainterp/optimizeopt/unroll.py
@@ -1,4 +1,5 @@
 from pypy.jit.metainterp.optimizeopt.optimizer import *
+from pypy.jit.metainterp.optimizeopt.virtualize import AbstractVirtualValue
 from pypy.jit.metainterp.resoperation import rop, ResOperation
 from pypy.jit.metainterp.compile import ResumeGuardDescr
 from pypy.jit.metainterp.resume import Snapshot
@@ -160,6 +161,8 @@
             if box in self.fieldboxes:
                 info.fieldstate = [self.state(b) for b in self.fieldboxes[box]]
                 # FIXME: Do we realy want to add fields to the VirtualInfo's?
+            elif isinstance(value, AbstractVirtualValue):
+                info.fieldstate = []
         return info
 
     def get_virtual_state(self, jump_args):

diff --git a/pypy/jit/metainterp/optimizeopt/virtualize.py b/pypy/jit/metainterp/optimizeopt/virtualize.py
--- a/pypy/jit/metainterp/optimizeopt/virtualize.py
+++ b/pypy/jit/metainterp/optimizeopt/virtualize.py
@@ -99,7 +99,10 @@
             len(self._fields) == len(_cached_sorted_fields)):
             lst = self._cached_sorted_fields
         else:
-            lst = self._fields.keys()
+            if self._fields is None:
+                lst = []
+            else:
+                lst = self._fields.keys()
             sort_descrs(lst)
             cache = get_fielddescrlist_cache(self.optimizer.cpu)
             result = cache.get(lst, None)


More information about the Pypy-commit mailing list