void add_frame_variables(php::Func& func, const FuncEmitter& fe) { for (auto& param : fe.params) { func.params.push_back( php::Param { param.defaultValue, NoBlockId, param.typeConstraint, param.userType, param.phpCode, param.userAttributes, param.builtinType, param.byRef, param.byRef, param.variadic } ); } func.locals.reserve(fe.numLocals()); for (LocalId id = 0; id < fe.numLocals(); ++id) { func.locals.push_back({nullptr, id, false}); } for (auto& kv : fe.localNameMap()) { func.locals[kv.second].name = kv.first; } func.numIters = fe.numIterators(); func.staticLocals.reserve(fe.staticVars.size()); for (auto& sv : fe.staticVars) { func.staticLocals.push_back( php::StaticLocalInfo { sv.name, sv.phpCode } ); } }
void add_frame_variables(php::Func& func, const FuncEmitter& fe) { for (auto& param : fe.params()) { func.params.push_back( php::Param { param.defaultValue(), nullptr, param.typeConstraint(), param.userType(), param.phpCode(), param.userAttributes(), param.builtinType(), param.ref(), param.isVariadic() } ); } func.locals.resize(fe.numLocals()); for (size_t id = 0; id < func.locals.size(); ++id) { auto& loc = func.locals[id]; loc = folly::make_unique<php::Local>(); loc->id = id; loc->name = nullptr; } for (auto& kv : fe.localNameMap()) { func.locals[kv.second]->name = kv.first; } func.iters.resize(fe.numIterators()); for (uint32_t i = 0; i < func.iters.size(); ++i) { func.iters[i] = folly::make_unique<php::Iter>(); func.iters[i]->id = i; } func.staticLocals.reserve(fe.svInfo().size()); for (auto& sv : fe.svInfo()) { func.staticLocals.push_back( php::StaticLocalInfo { sv.name, sv.phpCode } ); } }