OpValue OpList::gen_icode(ICodeGenerator *gen) { assert(NULL != gen); for (size_t i = 0, sz = _list.size(); i < sz; ++i) { Op *op = _list.at(i); assert(NULL != op); op->gen_icode(gen); } return gen->void_operand(); }
OpValue InvokeOp::gen_icode(ICodeGenerator *gen) { assert(NULL != gen); OpValue func = _func->gen_icode(gen); const size_t sz = _args.size(); for (size_t i = 0; i < sz; ++i) { Op *p = _args.at(i); gen->push_param(p->gen_icode(gen), p->get_source_line()); } return gen->invoke_op(func, sz, get_source_line()); }