Permalink
Browse files

every code generator takes a graph

  • Loading branch information...
Andy Chu
Andy Chu committed Mar 19, 2018
1 parent 7c23a53 commit a392848791f8fbb5ae889ac6ef22d341ac7e78fb
Showing with 22 additions and 16 deletions.
  1. +22 −16 opy/compiler2/pycodegen.py
View
@@ -330,8 +330,13 @@ def visitFunction(self, node):
else:
ndecorators = 0
gen = FunctionCodeGenerator(node, self.scopes, node.name,
self.class_name, self.get_module())
_CheckNoTupleArgs(node)
graph = pyassem.PyFlowGraph(node.name, node.filename, optimized=1)
graph.setArgs(node.argnames)
gen = FunctionCodeGenerator(graph, node, self.scopes, self.class_name,
self.get_module())
self._funcOrLambda(node, gen, ndecorators, isLambda=False)
# TODO: This seems like a bug. We already setDocstring in FindLocals()
@@ -347,10 +352,13 @@ def visitLambda(self, node):
obj_name = "<lambda.%d>" % gLambdaCount
gLambdaCount += 1
# TODO: _GenerateArgList -> _AssertNoTupleArgs, instantiate graph, pass
# args
gen = FunctionCodeGenerator(node, self.scopes, obj_name,
self.class_name, self.get_module())
_CheckNoTupleArgs(node)
graph = pyassem.PyFlowGraph(obj_name, node.filename, optimized=1)
graph.setArgs(node.argnames)
gen = FunctionCodeGenerator(graph, node, self.scopes, self.class_name,
self.get_module())
self._funcOrLambda(node, gen, 0, isLambda=True)
def _funcOrLambda(self, node, gen, ndecorators, isLambda=False):
@@ -663,8 +671,11 @@ def visitGenExpr(self, node):
# That workaround may no longer be necessary if we switch.
obj_name = '<genexpr>'
gen = GenExprCodeGenerator(node, self.scopes, obj_name,
self.class_name, self.get_module())
graph = pyassem.PyFlowGraph(obj_name, node.filename, optimized=1)
graph.setArgs(node.argnames)
gen = GenExprCodeGenerator(graph, node, self.scopes, self.class_name,
self.get_module())
gen.Start()
gen.FindLocals()
walk(node.code, gen)
@@ -1311,19 +1322,14 @@ class _FunctionCodeGenerator(CodeGenerator):
"""Abstract class."""
optimized = 1
def __init__(self, func, scopes, obj_name, class_name, mod):
def __init__(self, graph, func, scopes, class_name, module):
self.graph = graph
self.func = func
self.scopes = scopes
self.scope = scopes[func]
self.class_name = class_name
self.module = mod
self.module = module
_CheckNoTupleArgs(func)
self.graph = pyassem.PyFlowGraph(obj_name, func.filename,
optimized=1)
self.graph.setArgs(func.argnames)
CodeGenerator.__init__(self)
def get_module(self):

0 comments on commit a392848

Please sign in to comment.