[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