[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