[pypy-svn] r77540 - in pypy/branch/jit-unroll-loops/pypy: jit/metainterp jit/metainterp/optimizeopt jit/metainterp/test rlib

hakanardo at codespeak.net hakanardo at codespeak.net
Fri Oct 1 19:36:21 CEST 2010


Author: hakanardo
Date: Fri Oct  1 19:36:19 2010
New Revision: 77540

Modified:
   pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py
   pypy/branch/jit-unroll-loops/pypy/jit/metainterp/resume.py
   pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_basic.py
   pypy/branch/jit-unroll-loops/pypy/rlib/jit.py
Log:
guards working, test_loop_invariant_mul1 passing

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	Fri Oct  1 19:36:19 2010
@@ -14,15 +14,14 @@
         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],
-                                     loop.inputargs, jump_args)
-            print "IN: ", inputargs
+                                    loop.inputargs, jump_args)
             loop.inputargs = inputargs
             jmp = ResOperation(rop.JUMP, loop.inputargs[:], None)
             jmp.setdescr(loop.token)
@@ -36,16 +35,11 @@
         for i in range(len(loop_args)):
            argmap[loop_args[i]] = jump_args[i]
 
-        print
-        print
-        print argmap
-
         for v in self.optimizer.values.values():
            v.fromstart = True
 
         inputargs = jump_args[:]
         for op in loop_operations:
-            print "I:", op
             newop = op.clone()
             for i in range(op.numargs()):
                 a = op.getarg(i)
@@ -63,18 +57,25 @@
                 args = newop.getarglist()
                 newop.initarglist(args + inputargs[len(args):])
                 # FIXME: Assumes no virtuals
-            print "N:", newop
 
             current = len(self.optimizer.newoperations)
             self.emit_operation(newop)
+
             for op in self.optimizer.newoperations[current:]:
-                print "E:", op
+                if op.is_guard():
+                    args = []
+                    for a in op._fail_args:
+                        try:
+                            a = argmap[a]
+                        except KeyError:
+                            pass
+                        args.append(a)
+                    op.setfailargs(args)
+                    
                 for a in op.getarglist():
                     if not isinstance(a, Const) and a in self.optimizer.values:
                         v = self.getvalue(a)
-                        print "  testing ", a
                         if v.fromstart and a not in inputargs:
-                            print "  ", a
                             inputargs.append(a)
 
         return inputargs

Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/resume.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/resume.py	(original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/resume.py	Fri Oct  1 19:36:19 2010
@@ -298,7 +298,7 @@
         self.liveboxes_from_env = liveboxes_from_env
         self.liveboxes = {}
         storage.rd_numb = numb
-        storage.rd_snapshot = None
+        #storage.rd_snapshot = None FIXME!!
 
         # collect liveboxes and virtuals
         n = len(liveboxes_from_env) - v

Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_basic.py	(original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_basic.py	Fri Oct  1 19:36:19 2010
@@ -316,8 +316,8 @@
         res = self.meta_interp(f, [6, 7])
         assert res == 252
         self.check_loop_count(2)
-        self.check_loops({'guard_true': 1,
-                          'int_add': 1, 'int_sub': 1, 'int_gt': 1,
+        self.check_loops({'guard_true': 2,
+                          'int_add': 2, 'int_sub': 2, 'int_gt': 2,
                           'int_mul': 1,
                           'jump': 2})
 

Modified: pypy/branch/jit-unroll-loops/pypy/rlib/jit.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/rlib/jit.py	(original)
+++ pypy/branch/jit-unroll-loops/pypy/rlib/jit.py	Fri Oct  1 19:36:19 2010
@@ -236,7 +236,8 @@
               'trace_eagerness': 200,
               'trace_limit': 10000,
               'inlining': False,
-              'optimizer': OPTIMIZER_FULL,
+              #'optimizer': OPTIMIZER_FULL,
+              'optimizer': OPTIMIZER_NO_PERFECTSPEC,
               'debug' : DEBUG_STEPS,
               }
 unroll_parameters = unrolling_iterable(PARAMETERS.keys())



More information about the Pypy-commit mailing list