[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