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); }
private void EndEmitPopFree(FreeAddress address) { mILGenerator.Emit(OpCodes.Stfld, typeof(SharedValue).GetField("value")); }
private void BeginEmitPopFree(FreeAddress address) { JITInterpreter_DS2.EmitLoadThis(mILGenerator); mILGenerator.Emit(OpCodes.Ldfld, FieldBuilders[address]); }
private void EmitLoadFree(FreeAddress address) { JITInterpreter_DS2.EmitLoadThis(mILGenerator); mILGenerator.Emit(OpCodes.Ldfld, FieldBuilders[address]); mILGenerator.Emit(OpCodes.Ldfld, typeof(SharedValue).GetField("value")); }
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 FieldBuilder BeginEmitPopFree(FreeAddress address) { return EmitLoadFreeEnv(address); }