def __init__(self, bytecode): self.bytecode = bytecode self.scopes = [] self.loc = ir.Loc(filename=bytecode.filename, line=1) self.argspec = bytecode.argspec # Control flow analysis self.cfa = controlflow.ControlFlowAnalysis(bytecode) self.cfa.run() # Data flow analysis self.dfa = dataflow.DataFlowAnalysis(self.cfa) self.dfa.run() global_scope = ir.Scope(parent=None, loc=self.loc) self._fill_global_scope(global_scope) self.scopes.append(global_scope) # { inst offset : ir.Block } self.blocks = {} self.syntax_info = [] # Temp states during interpretation self.current_block = None self.current_block_offset = None self.syntax_blocks = [] self.dfainfo = None self._block_actions = {} self.constants = {}
def __init__(self, bytecode): self.bytecode = bytecode self.scopes = [] self.loc = ir.Loc(filename=bytecode.filename, line=1) self.argspec = bytecode.argspec # Control flow analysis self.cfa = controlflow.ControlFlowAnalysis(bytecode) self.cfa.run() # Data flow analysis self.dfa = dataflow.DataFlowAnalysis(self.cfa) self.dfa.run() global_scope = ir.Scope(parent=None, loc=self.loc) self._fill_global_scope(global_scope) self.scopes.append(global_scope) # { inst offset : ir.Block } self.blocks = {} # { name: value } of global variables used by the bytecode self.used_globals = {} self.definitions = collections.defaultdict(list) # Temp states during interpretation self.current_block = None self.current_block_offset = None self.syntax_blocks = [] self.dfainfo = None
def __init__(self, bytecode): self.bytecode = bytecode self.scopes = [] self.loc = ir.Loc(filename=bytecode.filename, line=1) self.argspec = bytecode.argspec # Control flow analysis self.cfa = controlflow.ControlFlowAnalysis(bytecode) self.cfa.run() # Data flow analysis self.dfa = dataflow.DataFlowAnalysis(self.cfa) self.dfa.run() global_scope = ir.Scope(parent=None, loc=self.loc) self._fill_global_scope(global_scope) self.scopes.append(global_scope) # { inst offset : ir.Block } self.blocks = {} # { name: value } of global variables used by the bytecode self.used_globals = {} # { name: [definitions] } of local variables self.definitions = collections.defaultdict(list) # { ir.Block: { variable names (potentially) alive at start of block } } self.block_entry_vars = {} if self.bytecode.is_generator: self.generator_info = GeneratorInfo() else: self.generator_info = None # Temp states during interpretation self.current_block = None self.current_block_offset = None self.syntax_blocks = [] self.dfainfo = None