[pypy-svn] r10111 - in pypy/dist/pypy: objspace/flow translator

tismer at codespeak.net tismer at codespeak.net
Wed Mar 23 03:47:56 CET 2005


Author: tismer
Date: Wed Mar 23 03:47:56 2005
New Revision: 10111

Modified:
   pypy/dist/pypy/objspace/flow/objspace.py
   pypy/dist/pypy/objspace/flow/specialcase.py
   pypy/dist/pypy/translator/geninterplevel.py
   pypy/dist/pypy/translator/translator.py
Log:
added a flag to translator/flowspace that disables
immediate imports during flowgraphing.


Modified: pypy/dist/pypy/objspace/flow/objspace.py
==============================================================================
--- pypy/dist/pypy/objspace/flow/objspace.py	(original)
+++ pypy/dist/pypy/objspace/flow/objspace.py	Wed Mar 23 03:47:56 2005
@@ -30,7 +30,9 @@
     full_exceptions = False
 
     builtins_can_raise_exceptions = False
-    
+
+    do_imports_immediately = True  # overridden in geninterplevel
+
     def initialize(self):
         import __builtin__
         self.concrete_mode = 0

Modified: pypy/dist/pypy/objspace/flow/specialcase.py
==============================================================================
--- pypy/dist/pypy/objspace/flow/specialcase.py	(original)
+++ pypy/dist/pypy/objspace/flow/specialcase.py	Wed Mar 23 03:47:56 2005
@@ -91,6 +91,7 @@
 def setup(space):
     fn = pyframe.normalize_exception.get_function(space)
     space.specialcases[fn] = sc_normalize_exception
-    space.specialcases[__import__] = sc_import
+    if space.do_imports_immediately:
+        space.specialcases[__import__] = sc_import
     for opname in ['lt', 'le', 'eq', 'ne', 'gt', 'ge', 'is_']:
         space.specialcases[getattr(operator, opname)] = sc_operator

Modified: pypy/dist/pypy/translator/geninterplevel.py
==============================================================================
--- pypy/dist/pypy/translator/geninterplevel.py	(original)
+++ pypy/dist/pypy/translator/geninterplevel.py	Wed Mar 23 03:47:56 2005
@@ -1335,7 +1335,9 @@
     # extract certain stuff like a general module maker
     # and put this into tools/compile_exceptions, maybe???
     dic, entrypoint = exceptions_helper()
-    t = Translator(None, verbose=False, simplifying=True, builtins_can_raise_exceptions=True)
+    t = Translator(None, verbose=False, simplifying=True,
+                   builtins_can_raise_exceptions=True,
+                   do_imports_immediately=False)
     gen = GenRpy(t, entrypoint)
     gen.moddict = dic
     gen.gen_source('/tmp/look.py')
@@ -1372,7 +1374,9 @@
     def test():
         entrypoint()
         
-    t = Translator(test, verbose=False, simplifying=True, builtins_can_raise_exceptions=True)
+    t = Translator(test, verbose=False, simplifying=True,
+                   builtins_can_raise_exceptions=True,
+                   do_imports_immediately=False)
     gen2 = GenRpy(t)
     gen2.gen_source("/tmp/look2.py")
 
@@ -1402,7 +1406,9 @@
     exec code in dic
     del dic['__builtins__']
     entrypoint = dic
-    t = Translator(None, verbose=False, simplifying=True, builtins_can_raise_exceptions=True)
+    t = Translator(None, verbose=False, simplifying=True,
+                   builtins_can_raise_exceptions=True,
+                   do_imports_immediately=False)
     gen = GenRpy(t, entrypoint, modname, dic)
     if tmpname:
         out = file(tmpname, 'w')

Modified: pypy/dist/pypy/translator/translator.py
==============================================================================
--- pypy/dist/pypy/translator/translator.py	(original)
+++ pypy/dist/pypy/translator/translator.py	Wed Mar 23 03:47:56 2005
@@ -46,11 +46,14 @@
 
 class Translator:
 
-    def __init__(self, func=None, verbose=False, simplifying=True, builtins_can_raise_exceptions=False):
+    def __init__(self, func=None, verbose=False, simplifying=True,
+                 builtins_can_raise_exceptions=False,
+                 do_imports_immediately=True):
         self.entrypoint = func
         self.verbose = verbose
         self.simplifying = simplifying
         self.builtins_can_raise_exceptions = builtins_can_raise_exceptions
+        self.do_imports_immediately = do_imports_immediately
         self.clear()
 
     def clear(self):
@@ -76,7 +79,8 @@
                     func.__name__)
             assert not self.frozen
             space = FlowObjSpace()
-            space.builtins_can_raise_exceptions = self.builtins_can_raise_exceptions 
+            space.builtins_can_raise_exceptions = self.builtins_can_raise_exceptions
+            space.do_imports_immediately = self.do_imports_immediately
             graph = space.build_flow(func)
             if self.simplifying:
                 simplify_graph(graph)



More information about the Pypy-commit mailing list