[pypy-svn] pypy jit-short_from_state: force unsupported vrituals and convert them into NotVirtual's when producing the VirtualState
hakanardo
commits-noreply at bitbucket.org
Mon Apr 25 10:37:21 CEST 2011
Author: Hakan Ardo <hakan at debian.org>
Branch: jit-short_from_state
Changeset: r43547:a933cd00f4b7
Date: 2011-04-24 20:51 +0200
http://bitbucket.org/pypy/pypy/changeset/a933cd00f4b7/
Log: force unsupported vrituals and convert them into NotVirtual's when
producing the VirtualState
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
@@ -158,8 +158,6 @@
loop.preamble.operations = self.optimizer.newoperations
- self.optimizer.force_at_end_of_preamble(jump_args)
-
modifier = VirtualStateAdder(self.optimizer)
virtual_state = modifier.get_virtual_state(jump_args)
values = [self.getvalue(arg) for arg in jump_args]
@@ -631,6 +629,7 @@
args = op.getarglist()
modifier = VirtualStateAdder(self.optimizer)
virtual_state = modifier.get_virtual_state(args)
+
for sh in short:
ok = False
extra_guards = []
diff --git a/pypy/jit/metainterp/optimizeopt/optimizer.py b/pypy/jit/metainterp/optimizeopt/optimizer.py
--- a/pypy/jit/metainterp/optimizeopt/optimizer.py
+++ b/pypy/jit/metainterp/optimizeopt/optimizer.py
@@ -81,7 +81,7 @@
return self.box
def force_at_end_of_preamble(self):
- pass
+ return None
def get_cloned(self, optimizer, valuemap, force_if_needed=True):
if self in valuemap:
@@ -330,10 +330,6 @@
self.optimizations = optimizations
- def force_at_end_of_preamble(self, jumpargs):
- for a in jumpargs:
- self.getvalue(a).force_at_end_of_preamble()
-
def reconstruct_for_next_iteration(self, short_boxes, surviving_boxes=None,
optimizer=None, valuemap=None):
assert optimizer is None
diff --git a/pypy/jit/metainterp/optimizeopt/virtualstate.py b/pypy/jit/metainterp/optimizeopt/virtualstate.py
--- a/pypy/jit/metainterp/optimizeopt/virtualstate.py
+++ b/pypy/jit/metainterp/optimizeopt/virtualstate.py
@@ -4,7 +4,7 @@
LEVEL_KNOWNCLASS, \
LEVEL_NONNULL, \
LEVEL_UNKNOWN, \
- MININT, MAXINT
+ MININT, MAXINT, OptValue
from pypy.jit.metainterp.history import BoxInt, ConstInt, BoxPtr, Const
from pypy.jit.metainterp.optimizeutil import InvalidLoop
from pypy.jit.metainterp.optimizeopt.intutils import IntBound
@@ -271,7 +271,11 @@
def get_virtual_state(self, jump_args):
for box in jump_args:
value = self.getvalue(box)
- value.get_args_for_fail(self)
+ box = value.force_at_end_of_preamble()
+ if box:
+ self.make_not_virtual(OptValue(box))
+ else:
+ value.get_args_for_fail(self)
return VirtualState([self.state(box) for box in 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
@@ -32,7 +32,7 @@
return self.box
def force_at_end_of_preamble(self):
- self.force_box()
+ return self.force_box()
def make_virtual_info(self, modifier, fieldnums):
if fieldnums is None:
@@ -91,7 +91,7 @@
return True
def force_at_end_of_preamble(self):
- pass
+ return None
def _really_force(self):
op = self.source_op
@@ -244,7 +244,7 @@
self._items[index] = itemvalue
def force_at_end_of_preamble(self):
- pass
+ return None
def _really_force(self):
assert self.source_op is not None
More information about the Pypy-commit
mailing list