[pypy-svn] r27126 - pypy/dist/pypy/translator/stackless
mwh at codespeak.net
mwh at codespeak.net
Fri May 12 13:04:27 CEST 2006
Author: mwh
Date: Fri May 12 13:04:26 2006
New Revision: 27126
Modified:
pypy/dist/pypy/translator/stackless/transform.py
Log:
add a stackless analyzer; currently it just says "yes" all the time though.
Modified: pypy/dist/pypy/translator/stackless/transform.py
==============================================================================
--- pypy/dist/pypy/translator/stackless/transform.py (original)
+++ pypy/dist/pypy/translator/stackless/transform.py Fri May 12 13:04:26 2006
@@ -13,6 +13,7 @@
from pypy.rpython.rbuiltin import gen_cast
from pypy.rpython.rtyper import LowLevelOpList
from pypy.rpython.module import ll_stackless, ll_stack
+from pypy.translator.backendopt import graphanalyze
from pypy.translator.stackless.code import STATE_HEADER, null_state
@@ -108,20 +109,24 @@
*fields)
self.frametypes[key] = T
return T, fieldnames
-
+
+class StacklessAnalyzer(graphanalyze.GraphAnalyzer):
+ def operation_is_true(self, op):
+ return True
class StacklessTransformer(object):
def __init__(self, translator, entrypoint):
self.translator = translator
- edata = translator.rtyper.getexceptiondata()
+ self.frametyper = FrameTyper()
+ self.analyzer = StacklessAnalyzer(translator)
+ self.curr_graph = None
+
bk = translator.annotator.bookkeeper
self.unwind_exception_type = getinstancerepr(
self.translator.rtyper,
bk.getuniqueclassdef(code.UnwindException)).lowleveltype
- self.frametyper = FrameTyper()
- self.curr_graph = None
mixlevelannotator = MixLevelHelperAnnotator(translator.rtyper)
l2a = annmodel.lltype_to_annotation
@@ -200,6 +205,9 @@
if hasattr(graph, 'func'):
if getattr(graph.func, 'stackless_explicit', False):
return
+
+ if not self.analyzer.analyze_direct_call(graph):
+ return
assert self.curr_graph is None
self.curr_graph = graph
More information about the Pypy-commit
mailing list