Ejemplo n.º 1
0
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);
    }
}
Ejemplo n.º 2
0
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);
    }
}