[pypy-svn] r77744 - in pypy/branch/jit-unroll-loops/pypy/jit/metainterp: optimizeopt test
hakanardo at codespeak.net
hakanardo at codespeak.net
Sat Oct 9 15:33:51 CEST 2010
Author: hakanardo
Date: Sat Oct 9 15:33:49 2010
New Revision: 77744
Modified:
pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/optimizer.py
pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py
pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/virtualize.py
pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_virtual.py
Log:
support some virtuals
Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/optimizer.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/optimizer.py (original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/optimizer.py Sat Oct 9 15:33:49 2010
@@ -47,6 +47,10 @@
def get_key_box(self):
return self.box
+ # FIXME: Reise get_args_for_fail instead?
+ def get_forced_boxes(self):
+ return [self.force_box()]
+
def get_args_for_fail(self, modifier):
pass
Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py (original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py Sat Oct 9 15:33:49 2010
@@ -14,13 +14,13 @@
if not self.enabled:
self.emit_operation(op)
return
-
+
if op.getopnum() == rop.JUMP:
loop = self.optimizer.loop
loop.preamble.operations = self.optimizer.newoperations
self.optimizer.newoperations = []
jump_args = op.getarglist()
- inputargs = self.inline(loop.preamble.operations + [op],
+ inputargs = self.inline(loop.operations,
loop.inputargs, jump_args)
loop.inputargs = inputargs
jmp = ResOperation(rop.JUMP, loop.inputargs[:], None)
@@ -38,7 +38,10 @@
for v in self.optimizer.values.values():
v.fromstart = True
- inputargs = jump_args[:]
+ inputargs = []
+ for arg in jump_args:
+ inputargs.extend(self.getvalue(arg).get_forced_boxes())
+
for op in loop_operations:
newop = op.clone()
for i in range(op.numargs()):
@@ -55,9 +58,10 @@
descr.rd_numb = None
if newop.getopnum() == rop.JUMP:
- args = newop.getarglist()
+ args = []
+ for arg in newop.getarglist():
+ args.extend(self.getvalue(arg).get_forced_boxes())
newop.initarglist(args + inputargs[len(args):])
- # FIXME: Assumes no virtuals
current = len(self.optimizer.newoperations)
self.emit_operation(newop)
Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/virtualize.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/virtualize.py (original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/virtualize.py Sat Oct 9 15:33:49 2010
@@ -121,6 +121,13 @@
fieldvalue = self._fields[ofs]
fieldvalue.get_args_for_fail(modifier)
+ def get_forced_boxes(self):
+ lst = self._get_field_descr_list()
+ fieldboxes = []
+ for ofs in lst:
+ fieldboxes.extend(self._fields[ofs].get_forced_boxes())
+ return fieldboxes
+
class VirtualValue(AbstractVirtualStructValue):
level = LEVEL_KNOWNCLASS
Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_virtual.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_virtual.py (original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_virtual.py Sat Oct 9 15:33:49 2010
@@ -12,7 +12,7 @@
def _freeze_(self):
return True
- def test_virtualized(self):
+ def test_virtualized1(self):
myjitdriver = JitDriver(greens = [], reds = ['n', 'node'])
def f(n):
node = self._new()
More information about the Pypy-commit
mailing list