Microsoft.JScript.FunctionExpression.TranslateToIL C# (CSharp) Method

TranslateToIL() private method

private TranslateToIL ( ILGenerator il, Type rtype ) : void
il System.Reflection.Emit.ILGenerator
rtype System.Type
return void
      internal override void TranslateToIL(ILGenerator il, Type rtype){
        //This is executed every time the function expression is executed and constructs a new closure for every execution.
        if (rtype == Typeob.Void)
          return;
        il.Emit(OpCodes.Ldloc, this.func_local);
        il.Emit(OpCodes.Newobj, CompilerGlobals.closureConstructor);
        Convert.Emit(this, il, Typeob.Closure, rtype);
        if (this.field != null){
          il.Emit(OpCodes.Dup);
          Object tok = this.field.GetMetaData();
          if (tok is LocalBuilder)
            il.Emit(OpCodes.Stloc, (LocalBuilder)tok);
          else
            il.Emit(OpCodes.Stsfld, (FieldInfo)tok);
        }
      }