'Generate IR for this bytecode.'

def interpret(self, bytecode):

    self.bytecode = bytecode
    self.scopes = []
    global_scope = ir.Scope(parent=None, loc=self.loc)
    self.scopes.append(global_scope)
    self.cfa = controlflow.ControlFlowAnalysis(bytecode)
    self.cfa.run()
    if config.DUMP_CFG:
        self.cfa.dump()
    self.dfa = dataflow.DataFlowAnalysis(self.cfa)
    self.dfa.run()
    self.current_block = None
    self.current_block_offset = None
    self.syntax_blocks = []
    self.dfainfo = None
    firstblk = min(self.cfa.blocks.keys())
    self.scopes.append(ir.Scope(parent=self.current_scope, loc=self.loc))
    for (inst, kws) in self._iter_inst():
        self._dispatch(inst, kws)
    return ir.FunctionIR(self.blocks, self.is_generator, self.func_id, self.first_loc, self.definitions, self.arg_count, self.arg_names)
