public void Emit(CodeGenerator generator) { _targetObject.Emit(generator); _value.Emit(generator); generator.CastType(_value.ObjectType, _field.FieldType); generator.Emit(OpCodes.Stfld, _field); }
public void Emit(CodeGenerator generator) { _value.Emit(generator); if (ObjectType.IsValueType) { generator.Emit(OpCodes.Box, ObjectType); } }
public void Emit(CodeGenerator generator) { switch (_localBuilder.LocalIndex) { case 0: generator.Emit(OpCodes.Ldloc_0); break; case 1: generator.Emit(OpCodes.Ldloc_1); break; case 2: generator.Emit(OpCodes.Ldloc_2); break; case 3: generator.Emit(OpCodes.Ldloc_3); break; default: generator.Emit(OpCodes.Ldloc, _localBuilder.LocalIndex); break; } }
public void Emit(CodeGenerator generator) { switch (_index) { case 0: generator.Emit(OpCodes.Ldarg_0); break; case 1: generator.Emit(OpCodes.Ldarg_1); break; case 2: generator.Emit(OpCodes.Ldarg_2); break; case 3: generator.Emit(OpCodes.Ldarg_3); break; default: generator.Emit(OpCodes.Ldarg, _index); break; } }
public void Emit(CodeGenerator generator) { _returnValue.Emit(generator); if (ObjectType == _returnValue.ObjectType) { generator.Emit(OpCodes.Ret); } else { generator.CastType(_returnValue.ObjectType, ObjectType) .Emit(OpCodes.Ret); } }
public void Emit(CodeGenerator generator) { _array.Emit(generator); switch (_index) { case 0: generator.Emit(OpCodes.Ldc_I4_0); break; case 1: generator.Emit(OpCodes.Ldc_I4_1); break; case 2: generator.Emit(OpCodes.Ldc_I4_2); break; case 3: generator.Emit(OpCodes.Ldc_I4_3); break; default: generator.Emit(OpCodes.Ldc_I4, _index); break; } generator.Emit(OpCodes.Ldelem, ObjectType); }
public void Emit(CodeGenerator generator) { _localBuilder.Where(x => x.LocalType.IsValueType) .Do(x => generator.Emit(OpCodes.Ldloca, x.LocalIndex)) .Do(x => generator.Emit(OpCodes.Initobj, x.LocalType)); }
public void Emit(CodeGenerator generator) { generator.Emit(OpCodes.Ldnull); }
public void Emit(CodeGenerator generator) { _source.Emit(generator); generator.Emit(OpCodes.Ldfld, _field); }