public override void Visit(Model.Bytecode.StoreArrayElementInstruction instruction) { Mono.Cecil.Cil.Instruction res = null; if (!instruction.Array.IsVector) { Cecil.MethodReference arraySet = ArrayHelper.ArraySet(referenceGenerator.TypeReference(instruction.Array) as Cecil.ArrayType); res = processor.Create(Mono.Cecil.Cil.OpCodes.Call, arraySet); } else if (instruction.Array.ElementsType == Model.Types.PlatformType.IntPtr) { res = processor.Create(Mono.Cecil.Cil.OpCodes.Stelem_I); } else if (instruction.Array.ElementsType == Model.Types.PlatformType.Int8) { res = processor.Create(Mono.Cecil.Cil.OpCodes.Stelem_I1); } else if (instruction.Array.ElementsType == Model.Types.PlatformType.Int16) { res = processor.Create(Mono.Cecil.Cil.OpCodes.Stelem_I2); } else if (instruction.Array.ElementsType == Model.Types.PlatformType.Int32) { res = processor.Create(Mono.Cecil.Cil.OpCodes.Stelem_I4); } else if (instruction.Array.ElementsType == Model.Types.PlatformType.Int64) { res = processor.Create(Mono.Cecil.Cil.OpCodes.Stelem_I8); } else if (instruction.Array.ElementsType == Model.Types.PlatformType.Float32) { res = processor.Create(Mono.Cecil.Cil.OpCodes.Stelem_R4); } else if (instruction.Array.ElementsType == Model.Types.PlatformType.Float64) { res = processor.Create(Mono.Cecil.Cil.OpCodes.Stelem_R8); } else if (instruction.Array.ElementsType == Model.Types.PlatformType.Float64) { res = processor.Create(Mono.Cecil.Cil.OpCodes.Stelem_R8); } else if (instruction.Array.ElementsType.TypeKind == Model.Types.TypeKind.ReferenceType) { res = processor.Create(Mono.Cecil.Cil.OpCodes.Stelem_Ref); } else { res = processor.Create(Mono.Cecil.Cil.OpCodes.Stelem_Any, referenceGenerator.TypeReference(instruction.Array.ElementsType)); } Result = new List <Mono.Cecil.Cil.Instruction>() { res }; }