[pypy-svn] rev 2018 - in pypy/trunk/src/pypy/translator: . test

sanxiyn at codespeak.net sanxiyn at codespeak.net
Tue Oct 21 16:10:21 CEST 2003


Author: sanxiyn
Date: Tue Oct 21 16:10:21 2003
New Revision: 2018

Modified:
   pypy/trunk/src/pypy/translator/gencl.py
   pypy/trunk/src/pypy/translator/test/benchmark.py
Log:
gencl: block nil + let + tagbody = prog!
benchmark: proper CL integration


Modified: pypy/trunk/src/pypy/translator/gencl.py
==============================================================================
--- pypy/trunk/src/pypy/translator/gencl.py	(original)
+++ pypy/trunk/src/pypy/translator/gencl.py	Tue Oct 21 16:10:21 2003
@@ -98,26 +98,35 @@
     def emit(self):
         self.emit_defun(self.fun)
     def emit_defun(self, fun):
-        print "(defun", fun.functionname, "(",
-        for arg in fun.get_args():
+        print "(defun", fun.functionname
+        arglist = fun.get_args()
+        print "(",
+        for arg in arglist:
             print self.str(arg),
         print ")"
-        print "(block nil"
-        print "(tagbody"
+        print "(prog"
         startblock = fun.startblock
         blocklist = []
         def collect_block(node):
             if isinstance(node, BasicBlock):
                 blocklist.append(node)
         startblock.visit(collect_block)
+        varlist = []
         for block in blocklist:
             tag = len(self.blockref)
             self.blockref[block] = tag
+            varlist.extend(block.getlocals())
+        print "(",
+        for var in varlist:
+            if var in arglist:
+                print "(", self.str(var), self.str(var), ")"
+            else:
+                print self.str(var),
+        print ")"
         for block in blocklist:
             self.emit_block(block)
         print ")"
         print ")"
-        print ")"
     def emit_block(self, block):
         self.cur_block = block
         tag = self.blockref[block]

Modified: pypy/trunk/src/pypy/translator/test/benchmark.py
==============================================================================
--- pypy/trunk/src/pypy/translator/test/benchmark.py	(original)
+++ pypy/trunk/src/pypy/translator/test/benchmark.py	Tue Oct 21 16:10:21 2003
@@ -2,7 +2,7 @@
 from pypy.tool import test
 from pypy.tool.udir import udir
 from pypy.translator.test.test_pyrextrans import make_cfunc
-from pypy.translator.test.test_cltrans import make_cl_func
+from pypy.translator.test.test_cltrans import global_cl, make_cl_func
 
 def benchmark(func):
     try:
@@ -10,14 +10,17 @@
     except AttributeError:
         pass
     c_func = make_cfunc(func)
-    #cl_func = make_cl_func(func)
+    if global_cl:
+        cl_func = make_cl_func(func)
     print "generated c-func for", func.func_name
     t1 = timeit(100, func)
     t2 = timeit(100, c_func)
-    #t3 = timeit(100, cl_func)
+    if global_cl:
+        t3 = timeit(100, cl_func)
     print "cpython func       ", t1, "seconds"
     print "pypy/pyrex/cmodule ", t2, "seconds"
-    #print "cl (experimental)  ", t3, "seconds"
+    if global_cl:
+        print "cl (experimental)  ", t3, "seconds", global_cl
    
 def timeit(num, func, *args):
     from time import time as now


More information about the Pypy-commit mailing list