[pypy-svn] r65380 - in pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp: . test

fijal at codespeak.net fijal at codespeak.net
Sun May 24 16:51:28 CEST 2009


Author: fijal
Date: Sun May 24 16:51:27 2009
New Revision: 65380

Modified:
   pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/optimize2.py
   pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/test/test_optimize2.py
Log:
After fixing the runner logic, test started failing, fix


Modified: pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/optimize2.py
==============================================================================
--- pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/optimize2.py	(original)
+++ pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/optimize2.py	Sun May 24 16:51:27 2009
@@ -95,9 +95,13 @@
     def optimize_operations(self):
         newoperations = []
         for op in self.loop.operations:
+            newop = op
             for opt in self.optimizations[op.opnum]:
-                if opt(op, self) is None:
-                    continue
+                newop = opt(op, self)
+                if newop is None:
+                    break
+            if newop is None:
+                continue
             if op.is_guard():
                 self.optimize_guard(op)
                 newoperations.append(op)
@@ -135,6 +139,10 @@
         instnode.cls = op.args[1]
         return op
 
+class SimpleVirtualizableOpt(object):
+    def optimize_guard_nonvirtualized(self, op, spec):
+        xxx
+
 specializer = Specializer([])
 
 def optimize_loop(options, old_loops, loop, cpu=None, spec=specializer):

Modified: pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/test/test_optimize2.py
==============================================================================
--- pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/test/test_optimize2.py	(original)
+++ pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/test/test_optimize2.py	Sun May 24 16:51:27 2009
@@ -9,7 +9,7 @@
 from pypy.jit.backend.llgraph import runner
 
 from pypy.jit.metainterp.optimize2 import (optimize_loop,
-     ConsecutiveGuardClassRemoval, Specializer)
+     ConsecutiveGuardClassRemoval, Specializer, SimpleVirtualizableOpt)
 from pypy.jit.metainterp.test.test_optimize import equaloplists, ANY
 
 from pypy.jit.metainterp.test.oparser import parse
@@ -29,6 +29,10 @@
     nodebox = BoxPtr(lltype.cast_opaque_ptr(llmemory.GCREF, node))
     nodedescr = cpu.fielddescrof(NODE, 'value')
 
+    XY = lltype.GcStruct('XY', ('field', lltype.Signed),
+                         hints= {'virtualizable2': True})
+    field_desc = cpu.fielddescrof(XY, 'field')
+
     namespace = locals()
 
 class OOtypeMixin(object):
@@ -84,6 +88,25 @@
                                         [ConsecutiveGuardClassRemoval()]),
                           expected)
 
+    def test_basic_virtualizable(self):
+        py.test.skip("xxx")
+        pre_op = """
+        [p0]
+        guard_nonvirtualized(p0)
+            fail()
+        i1 = getfield_gc(p0, descr=field_desc)
+        i2 = getfield_gc(p0, descr=field_desc)
+        i3 = int_add(i1, i2)
+        """
+        expected = """
+        [p0]
+        i1 = getfield_gc(p0, descr=field_desc)
+        i3 = int_add(i1, i1)
+        """
+        self.assert_equal(self.optimize(pre_op, [SimpleVirtualizableOpt()]),
+                          expected)
+        
+
     def test_remove_consecutive_guard_value_constfold(self):
         py.test.skip("not yet")
         n = BoxInt(0)



More information about the Pypy-commit mailing list