Example #1
0
 public void Emit(CodeGenerator generator)
 {
     _targetObject.Emit(generator);
     _value.Emit(generator);
     generator.CastType(_value.ObjectType, _field.FieldType);
     generator.Emit(OpCodes.Stfld, _field);
 }
Example #2
0
        public void Emit(CodeGenerator generator)
        {
            _value.Emit(generator);

            if (ObjectType.IsValueType)
            {
                generator.Emit(OpCodes.Box, ObjectType);
            }
        }
Example #3
0
 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;
     }
 }
Example #4
0
 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;
     }
 }
Example #5
0
 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);
     }
 }
Example #6
0
 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));
 }
Example #8
0
 public void Emit(CodeGenerator generator)
 {
     generator.Emit(OpCodes.Ldnull);
 }
Example #9
0
 public void Emit(CodeGenerator generator)
 {
     _source.Emit(generator);
     generator.Emit(OpCodes.Ldfld, _field);
 }