private FieldBuilder EmitLoadFreeEnv(FreeAddress address)
            {
                JITInterpreter_DS.EmitLoadThis(mILGenerator);
                ASTNodeVisitor_JITCompiler visitor = mParent;

                for (int i = 1; i < address.envIndex; ++i)
                {
                    mILGenerator.Emit(OpCodes.Ldfld, visitor.mHeapEnvFieldBuilders[PREV_ENV_FIELD_NAME]);
                    visitor = visitor.mParent;
                }
                return(visitor.mHeapEnvFieldBuilders[visitor.mLambdaNode.locals[address.index]]);
            }
 private void EndEmitPopFree(FreeAddress address, FieldBuilder field)
 {
     mILGenerator.Emit(OpCodes.Stfld, field);
 }
 private FieldBuilder BeginEmitPopFree(FreeAddress address)
 {
     return(EmitLoadFreeEnv(address));
 }
            private void EmitLoadFree(FreeAddress address)
            {
                var field = EmitLoadFreeEnv(address);

                mILGenerator.Emit(OpCodes.Ldfld, field);
            }
예제 #5
0
 private void EndEmitPopFree(FreeAddress address)
 {
     mILGenerator.Emit(OpCodes.Stfld, typeof(SharedValue).GetField("value"));
 }
예제 #6
0
 private void BeginEmitPopFree(FreeAddress address)
 {
     JITInterpreter_DS2.EmitLoadThis(mILGenerator);
     mILGenerator.Emit(OpCodes.Ldfld, FieldBuilders[address]);
 }
예제 #7
0
 private void EmitLoadFree(FreeAddress address)
 {
     JITInterpreter_DS2.EmitLoadThis(mILGenerator);
     mILGenerator.Emit(OpCodes.Ldfld, FieldBuilders[address]);
     mILGenerator.Emit(OpCodes.Ldfld, typeof(SharedValue).GetField("value"));
 }
 private void BeginEmitPopFree(FreeAddress address)
 {
     JITInterpreter_DS2.EmitLoadThis(mILGenerator);
     mILGenerator.Emit(OpCodes.Ldfld, FieldBuilders[address]);
 }
 private void EndEmitPopFree(FreeAddress address)
 {
     mILGenerator.Emit(OpCodes.Stfld, typeof(SharedValue).GetField("value"));
 }
 private void EmitLoadFree(FreeAddress address)
 {
     JITInterpreter_DS2.EmitLoadThis(mILGenerator);
     mILGenerator.Emit(OpCodes.Ldfld, FieldBuilders[address]);
     mILGenerator.Emit(OpCodes.Ldfld, typeof(SharedValue).GetField("value"));
 }
예제 #11
0
 private void EndEmitPopFree(FreeAddress address, FieldBuilder field)
 {
     mILGenerator.Emit(OpCodes.Stfld, field);
 }
예제 #12
0
 private FieldBuilder EmitLoadFreeEnv(FreeAddress address)
 {
     JITInterpreter_DS.EmitLoadThis(mILGenerator);
     ASTNodeVisitor_JITCompiler visitor = mParent;
     for (int i = 1; i < address.envIndex; ++i) {
         mILGenerator.Emit(OpCodes.Ldfld, visitor.mHeapEnvFieldBuilders[PREV_ENV_FIELD_NAME]);
         visitor = visitor.mParent;
     }
     return visitor.mHeapEnvFieldBuilders[visitor.mLambdaNode.locals[address.index]];
 }
예제 #13
0
 private void EmitLoadFree(FreeAddress address)
 {
     var field = EmitLoadFreeEnv(address);
     mILGenerator.Emit(OpCodes.Ldfld, field);
 }
예제 #14
0
 private FieldBuilder BeginEmitPopFree(FreeAddress address)
 {
     return EmitLoadFreeEnv(address);
 }