void initializeLambda(LambdaPtr x, EnvPtr env) { assert(!x->initialized); x->initialized = true; string lname = lambdaName(x); ostringstream ostr; ostr << "%closureData:" << lname; string closureDataName = ostr.str(); convertFreeVars(x, env, closureDataName, x->freeVars); getProcedureMonoTypes(x->mono, env, x->formalArgs, x->formalVarArg); if (x->freeVars.empty()) { initializeLambdaWithoutFreeVars(x, env, closureDataName, lname); } else { initializeLambdaWithFreeVars(x, env, closureDataName, lname); } }
void initializeLambda(LambdaPtr x, EnvPtr env) { assert(!x->initialized); x->initialized = true; int lambdaObjectIndex = nextLambdaObjectIndex(); ostringstream ostr; ostr << "%closureData" << lambdaObjectIndex; string closureDataName = ostr.str(); convertFreeVars(x, env, closureDataName, x->freeVars); if (x->freeVars.empty()) { initializeLambdaWithoutFreeVars(x, env); } else { initializeLambdaWithFreeVars( x, env, closureDataName, lambdaObjectIndex); } }