[pypy-svn] r27300 - in pypy/dist/pypy/translator: . c goal

arigo at codespeak.net arigo at codespeak.net
Tue May 16 21:16:55 CEST 2006


Author: arigo
Date: Tue May 16 21:16:53 2006
New Revision: 27300

Modified:
   pypy/dist/pypy/translator/c/database.py
   pypy/dist/pypy/translator/driver.py
   pypy/dist/pypy/translator/goal/targetgcbench.py
   pypy/dist/pypy/translator/goal/translate.py
Log:
Added the option  --gc=stacklessgc  to translate.py.  Some clean-up of way this option is parsed.


Modified: pypy/dist/pypy/translator/c/database.py
==============================================================================
--- pypy/dist/pypy/translator/c/database.py	(original)
+++ pypy/dist/pypy/translator/c/database.py	Tue May 16 21:16:53 2006
@@ -40,26 +40,25 @@
         self.namespace = CNameManager()
         if not standalone:
             self.pyobjmaker = PyObjMaker(self.namespace, self.get, translator)
-        if gcpolicy is None:
+
+        gcpolicy = gcpolicy or conftest.option.gcpolicy or 'ref'
+        if isinstance(gcpolicy, str):
             from pypy.translator.c import gc
-            polname = conftest.option.gcpolicy
-            if polname is not None:
-                if polname == 'boehm':
-                    gcpolicy = gc.BoehmGcPolicy
-                elif polname == 'exact_boehm':
-                    gcpolicy = gc.MoreExactBoehmGcPolicy
-                elif polname == 'ref':
-                    gcpolicy = gc.RefcountingGcPolicy
-                elif polname == 'none':
-                    gcpolicy = gc.NoneGcPolicy
-                elif polname == 'framework':
-                    gcpolicy = gc.FrameworkGcPolicy
-                elif polname == 'stacklessgc':
-                    gcpolicy = gc.StacklessFrameworkGcPolicy
-                else:
-                    assert False, "unknown gc policy %r"%polname
-            else:
+            polname = gcpolicy
+            if polname == 'boehm':
+                gcpolicy = gc.BoehmGcPolicy
+            elif polname == 'exact_boehm':
+                gcpolicy = gc.MoreExactBoehmGcPolicy
+            elif polname == 'ref':
                 gcpolicy = gc.RefcountingGcPolicy
+            elif polname == 'none':
+                gcpolicy = gc.NoneGcPolicy
+            elif polname == 'framework':
+                gcpolicy = gc.FrameworkGcPolicy
+            elif polname == 'stacklessgc':
+                gcpolicy = gc.StacklessFrameworkGcPolicy
+            else:
+                assert False, "unknown gc policy %r"%polname
         if translator is None or translator.rtyper is None:
             self.exctransformer = None
         else:

Modified: pypy/dist/pypy/translator/driver.py
==============================================================================
--- pypy/dist/pypy/translator/driver.py	(original)
+++ pypy/dist/pypy/translator/driver.py	Tue May 16 21:16:53 2006
@@ -228,26 +228,13 @@
             translator.frozen = True
 
         standalone = self.standalone
-        gcpolicy = None
-        if opt.gc =='boehm':
-            from pypy.translator.c import gc
-            gcpolicy = gc.BoehmGcPolicy
-        if opt.gc =='exact_boehm':
-            from pypy.translator.c import gc
-            gcpolicy = gc.MoreExactBoehmGcPolicy
-        if opt.gc == 'none':
-            from pypy.translator.c import gc
-            gcpolicy = gc.NoneGcPolicy
-        if opt.gc == 'framework':
-            from pypy.translator.c import gc
-            gcpolicy = gc.FrameworkGcPolicy
 
         if standalone:
             from pypy.translator.c.genc import CStandaloneBuilder as CBuilder
         else:
             from pypy.translator.c.genc import CExtModuleBuilder as CBuilder
         cbuilder = CBuilder(self.translator, self.entry_point,
-                            gcpolicy       = gcpolicy,
+                            gcpolicy       = opt.gc,
                             thread_enabled = getattr(opt, 'thread', False))
         cbuilder.stackless = opt.stackless
         if not standalone:     # xxx more messy

Modified: pypy/dist/pypy/translator/goal/targetgcbench.py
==============================================================================
--- pypy/dist/pypy/translator/goal/targetgcbench.py	(original)
+++ pypy/dist/pypy/translator/goal/targetgcbench.py	Tue May 16 21:16:53 2006
@@ -2,7 +2,13 @@
 from pypy.translator.goal import gcbench
 
 def entry_point(argv):
-    gcbench.main()
+    if len(argv) > 1:
+        n = int(argv[1])
+    else:
+        n = 1
+    while n > 0:
+        gcbench.main()
+        n -= 1
     return 0
 
 # _____ Define and setup target ___

Modified: pypy/dist/pypy/translator/goal/translate.py
==============================================================================
--- pypy/dist/pypy/translator/goal/translate.py	(original)
+++ pypy/dist/pypy/translator/goal/translate.py	Tue May 16 21:16:53 2006
@@ -48,7 +48,7 @@
 
     '1_backend': [OPT(('-b', '--backend'), "Backend", ['c', 'llvm', 'cl', 'squeak', 'js'])],
 
-    '2_gc': [OPT(('--gc',), "Garbage collector", ['boehm', 'ref', 'framework', 'none', 'exact_boehm'])],
+    '2_gc': [OPT(('--gc',), "Garbage collector", ['boehm', 'ref', 'framework', 'none', 'exact_boehm', 'stacklessgc'])],
     '3_stackless': [OPT(('--new-stackless',), "Stackless code generation (graph transformer)", True)],
     '4_stackless': [OPT(('--stackless',), "Stackless code generation (old GenC way)", 'old')],
     '5_merge_if_blocks': [OPT(('--no-if-blocks-merge',), "Do not merge if ... elif ... chains and use a switch statement for them.", False)],



More information about the Pypy-commit mailing list