[pypy-svn] r66703 - in pypy/branch/pyjitpl5/pypy/jit/metainterp: . test
arigo at codespeak.net
arigo at codespeak.net
Thu Jul 30 17:10:06 CEST 2009
Author: arigo
Date: Thu Jul 30 17:10:06 2009
New Revision: 66703
Modified:
pypy/branch/pyjitpl5/pypy/jit/metainterp/optimizeopt.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizeopt.py
Log:
Test and fix.
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/optimizeopt.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/optimizeopt.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/optimizeopt.py Thu Jul 30 17:10:06 2009
@@ -609,7 +609,11 @@
def optimize_NEW_ARRAY(self, op):
sizebox = op.args[0]
if self.is_constant(sizebox):
- self.make_varray(op.descr, sizebox.getint(), op.result, op)
+ size = sizebox.getint()
+ if not isinstance(sizebox, ConstInt):
+ op = ResOperation(rop.NEW_ARRAY, [ConstInt(size)], op.result,
+ descr=op.descr)
+ self.make_varray(op.descr, size, op.result, op)
else:
self.optimize_default(op)
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizeopt.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizeopt.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizeopt.py Thu Jul 30 17:10:06 2009
@@ -762,6 +762,24 @@
self.optimize_loop(ops, 'Not, VArray(arraydescr, Not), Not',
expected)
+ def test_varray_forced_1(self):
+ ops = """
+ []
+ p2 = new_with_vtable(ConstClass(node_vtable))
+ setfield_gc(p2, 3, descr=valuedescr)
+ i1 = getfield_gc(p2, descr=valuedescr) # i1 = const 3
+ p1 = new_array(i1, descr=arraydescr)
+ escape(p1)
+ jump()
+ """
+ expected = """
+ []
+ p1 = new_array(3, descr=arraydescr)
+ escape(p1)
+ jump()
+ """
+ self.optimize_loop(ops, '', expected, i1=3)
+
def test_vstruct_1(self):
ops = """
[i1, p2]
More information about the Pypy-commit
mailing list