[2019-12] [threads] Add back mono_threads_attach_tools_thread as a public API (#18074)
[mono-project.git] / mono / tests / ldfldvt.il
blobbdaed5f4453e02268cf30f86fee101af3ac8c193
1 // C# source. Compiling this code with mcs didn't produce the necessary output
2 //
3 // public struct Struct1 {
4 //      public int f1;
5 //      public Struct2 f2;
6 //      public int f3;
7 // }
8 // 
9 // public struct Struct2 {
10 //      public int f1;
11 //      public int f2;
12 // }
13 // 
14 // public class MyArray {
15 // 
16 //      private Struct1[] array;
17 // 
18 //      public MyArray ()
19 //      {
20 //              array = new Struct1 [2];
21 // 
22 //              array [0].f1 = 1;
23 //              array [0].f2.f1 = 2;
24 //              array [0].f2.f2 = 3;
25 //              array [0].f3 = 4;
26 // 
27 //              array [1].f1 = 5;
28 //              array [1].f2.f1 = 6;
29 //              array [1].f2.f2 = 7;
30 //              array [1].f3 = 8;
31 //      }
32 // 
33 //      public Struct1 this [int index]
34 //      {
35 //              get {
36 //                      return array [index];
37 //              } set {
38 //                      array [index] = value;
39 //              }
40 //      }
41 // }
42 // 
43 // public class Program {
44 //      public static int Check (Struct2 s1, Struct2 s2)
45 //      {
46 //              if (s1.f1 == 2 && s1.f2 == 3 && s2.f1 == 6 && s2.f2 == 7)
47 //                      return 0;
48 //              return 1;
49 //      }
50 // 
51 //      public static int Check (MyArray array)
52 //      {
53 //              return Check (array [0].f2, array [1].f2);
54 //      }
55 // 
56 //      public static int Main (string[] args)
57 //      {
58 //              MyArray array = new MyArray ();
59 //              return Check (array);
60 //      }
61 // }
63 .assembly extern mscorlib
65   .ver 4:0:0:0
66   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
68 .assembly 'VT'
70   .custom instance void class [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::'.ctor'(int32) =  (01 00 08 00 00 00 00 00 ) // ........
72   .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() =  (
73                 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
74                 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01       ) // ceptionThrows.
76   .custom instance void class [mscorlib]System.Diagnostics.DebuggableAttribute::'.ctor'(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) =  (01 00 07 01 00 00 00 00 ) // ........
78   .custom instance void class [mscorlib]System.Reflection.AssemblyTitleAttribute::'.ctor'(string) =  (01 00 02 56 54 00 00 ) // ...VT..
80   .custom instance void class [mscorlib]System.Reflection.AssemblyDescriptionAttribute::'.ctor'(string) =  (01 00 00 00 00 ) // .....
82   .custom instance void class [mscorlib]System.Reflection.AssemblyConfigurationAttribute::'.ctor'(string) =  (01 00 00 00 00 ) // .....
84   .custom instance void class [mscorlib]System.Reflection.AssemblyCompanyAttribute::'.ctor'(string) =  (01 00 00 00 00 ) // .....
86   .custom instance void class [mscorlib]System.Reflection.AssemblyProductAttribute::'.ctor'(string) =  (01 00 02 56 54 00 00 ) // ...VT..
88   .custom instance void class [mscorlib]System.Reflection.AssemblyCopyrightAttribute::'.ctor'(string) =  (
89                 01 00 12 43 6F 70 79 72 69 67 68 74 20 C2 A9 20   // ...Copyright .. 
90                 20 32 30 31 38 00 00                            ) //  2018..
92   .custom instance void class [mscorlib]System.Reflection.AssemblyTrademarkAttribute::'.ctor'(string) =  (01 00 00 00 00 ) // .....
94   .custom instance void class [mscorlib]System.Runtime.InteropServices.ComVisibleAttribute::'.ctor'(bool) =  (01 00 00 00 00 ) // .....
96   .custom instance void class [mscorlib]System.Runtime.InteropServices.GuidAttribute::'.ctor'(string) =  (
97                 01 00 24 33 65 32 39 35 61 63 31 2D 65 61 34 32   // ..$3e295ac1-ea42
98                 2D 34 64 30 38 2D 38 62 61 32 2D 65 37 66 62 61   // -4d08-8ba2-e7fba
99                 66 37 31 30 61 38 63 00 00                      ) // f710a8c..
101   .custom instance void class [mscorlib]System.Reflection.AssemblyFileVersionAttribute::'.ctor'(string) =  (01 00 07 31 2E 30 2E 30 2E 30 00 00 ) // ...1.0.0.0..
103   .custom instance void class [mscorlib]System.Runtime.Versioning.TargetFrameworkAttribute::'.ctor'(string) =  (
104                 01 00 1C 2E 4E 45 54 46 72 61 6D 65 77 6F 72 6B   // ....NETFramework
105                 2C 56 65 72 73 69 6F 6E 3D 76 34 2E 36 2E 31 01   // ,Version=v4.6.1.
106                 00 54 0E 14 46 72 61 6D 65 77 6F 72 6B 44 69 73   // .T..FrameworkDis
107                 70 6C 61 79 4E 61 6D 65 14 2E 4E 45 54 20 46 72   // playName..NET Fr
108                 61 6D 65 77 6F 72 6B 20 34 2E 36 2E 31          ) // amework 4.6.1
110   .hash algorithm 0x00008004
111   .ver  1:0:0:0
113 .module VT.exe // GUID = {EC2F1E5D-A3E0-493A-8462-E24A6A70FF38}
116   .class public sequential ansi sealed beforefieldinit Struct1
117         extends [mscorlib]System.ValueType
118   {
119     .field  public  int32 f1
120     .field  public  valuetype Struct2 f2
121     .field  public  int32 f3
123   } // end of class Struct1
125   .class public sequential ansi sealed beforefieldinit Struct2
126         extends [mscorlib]System.ValueType
127   {
128     .field  public  int32 f1
129     .field  public  int32 f2
131   } // end of class Struct2
133   .class public auto ansi beforefieldinit MyArray
134         extends [mscorlib]System.Object
135   {
136     .custom instance void class [mscorlib]System.Reflection.DefaultMemberAttribute::'.ctor'(string) =  (01 00 04 49 74 65 6D 00 00 ) // ...Item..
138     .field  private  valuetype Struct1[] 'array'
140     // method line 1
141     .method public hidebysig specialname rtspecialname 
142            instance default void '.ctor' ()  cil managed 
143     {
144         // Method begins at RVA 0x2050
145         // Code size 185 (0xb9)
146         .maxstack 2
147         IL_0000:  ldarg.0 
148         IL_0001:  call instance void object::'.ctor'()
149         IL_0006:  nop 
150         IL_0007:  nop 
151         IL_0008:  ldarg.0 
152         IL_0009:  ldc.i4.2 
153         IL_000a:  newarr Struct1
154         IL_000f:  stfld valuetype Struct1[] MyArray::'array'
155         IL_0014:  ldarg.0 
156         IL_0015:  ldfld valuetype Struct1[] MyArray::'array'
157         IL_001a:  ldc.i4.0 
158         IL_001b:  ldelema Struct1
159         IL_0020:  ldc.i4.1 
160         IL_0021:  stfld int32 Struct1::f1
161         IL_0026:  ldarg.0 
162         IL_0027:  ldfld valuetype Struct1[] MyArray::'array'
163         IL_002c:  ldc.i4.0 
164         IL_002d:  ldelema Struct1
165         IL_0032:  ldflda valuetype Struct2 Struct1::f2
166         IL_0037:  ldc.i4.2 
167         IL_0038:  stfld int32 Struct2::f1
168         IL_003d:  ldarg.0 
169         IL_003e:  ldfld valuetype Struct1[] MyArray::'array'
170         IL_0043:  ldc.i4.0 
171         IL_0044:  ldelema Struct1
172         IL_0049:  ldflda valuetype Struct2 Struct1::f2
173         IL_004e:  ldc.i4.3 
174         IL_004f:  stfld int32 Struct2::f2
175         IL_0054:  ldarg.0 
176         IL_0055:  ldfld valuetype Struct1[] MyArray::'array'
177         IL_005a:  ldc.i4.0 
178         IL_005b:  ldelema Struct1
179         IL_0060:  ldc.i4.4 
180         IL_0061:  stfld int32 Struct1::f3
181         IL_0066:  ldarg.0 
182         IL_0067:  ldfld valuetype Struct1[] MyArray::'array'
183         IL_006c:  ldc.i4.1 
184         IL_006d:  ldelema Struct1
185         IL_0072:  ldc.i4.5 
186         IL_0073:  stfld int32 Struct1::f1
187         IL_0078:  ldarg.0 
188         IL_0079:  ldfld valuetype Struct1[] MyArray::'array'
189         IL_007e:  ldc.i4.1 
190         IL_007f:  ldelema Struct1
191         IL_0084:  ldflda valuetype Struct2 Struct1::f2
192         IL_0089:  ldc.i4.6 
193         IL_008a:  stfld int32 Struct2::f1
194         IL_008f:  ldarg.0 
195         IL_0090:  ldfld valuetype Struct1[] MyArray::'array'
196         IL_0095:  ldc.i4.1 
197         IL_0096:  ldelema Struct1
198         IL_009b:  ldflda valuetype Struct2 Struct1::f2
199         IL_00a0:  ldc.i4.7 
200         IL_00a1:  stfld int32 Struct2::f2
201         IL_00a6:  ldarg.0 
202         IL_00a7:  ldfld valuetype Struct1[] MyArray::'array'
203         IL_00ac:  ldc.i4.1 
204         IL_00ad:  ldelema Struct1
205         IL_00b2:  ldc.i4.8 
206         IL_00b3:  stfld int32 Struct1::f3
207         IL_00b8:  ret 
208     } // end of method MyArray::.ctor
210     // method line 2
211     .method public hidebysig specialname 
212            instance default valuetype Struct1 get_Item (int32 index)  cil managed 
213     {
214         // Method begins at RVA 0x2118
215         // Code size 18 (0x12)
216         .maxstack 2
217         .locals init (
218                 valuetype Struct1       V_0)
219         IL_0000:  nop 
220         IL_0001:  ldarg.0 
221         IL_0002:  ldfld valuetype Struct1[] MyArray::'array'
222         IL_0007:  ldarg.1 
223         IL_0008:  ldelem Struct1
224         IL_000d:  stloc.0 
225         IL_000e:  br.s IL_0010
227         IL_0010:  ldloc.0 
228         IL_0011:  ret 
229     } // end of method MyArray::get_Item
231     // method line 3
232     .method public hidebysig specialname 
233            instance default void set_Item (int32 index, valuetype Struct1 'value')  cil managed 
234     {
235         // Method begins at RVA 0x2136
236         // Code size 15 (0xf)
237         .maxstack 8
238         IL_0000:  nop 
239         IL_0001:  ldarg.0 
240         IL_0002:  ldfld valuetype Struct1[] MyArray::'array'
241         IL_0007:  ldarg.1 
242         IL_0008:  ldarg.2 
243         IL_0009:  stelem Struct1
244         IL_000e:  ret 
245     } // end of method MyArray::set_Item
247         .property instance valuetype Struct1 Item (int32)
248         {
249                 .get instance default valuetype Struct1 MyArray::get_Item (int32 index) 
250                 .set instance default void MyArray::set_Item (int32 index, valuetype Struct1 'value') 
251         }
252   } // end of class MyArray
254   .class public auto ansi beforefieldinit Program
255         extends [mscorlib]System.Object
256   {
258     // method line 4
259     .method public static hidebysig 
260            default int32 Check (valuetype Struct2 s1, valuetype Struct2 s2)  cil managed 
261     {
262         // Method begins at RVA 0x2148
263         // Code size 54 (0x36)
264         .maxstack 2
265         .locals init (
266                 bool    V_0,
267                 int32   V_1)
268         IL_0000:  nop 
269         IL_0001:  ldarg.0 
270         IL_0002:  ldfld int32 Struct2::f1
271         IL_0007:  ldc.i4.2 
272         IL_0008:  bne.un.s IL_0027
274         IL_000a:  ldarg.0 
275         IL_000b:  ldfld int32 Struct2::f2
276         IL_0010:  ldc.i4.3 
277         IL_0011:  bne.un.s IL_0027
279         IL_0013:  ldarg.1 
280         IL_0014:  ldfld int32 Struct2::f1
281         IL_0019:  ldc.i4.6 
282         IL_001a:  bne.un.s IL_0027
284         IL_001c:  ldarg.1 
285         IL_001d:  ldfld int32 Struct2::f2
286         IL_0022:  ldc.i4.7 
287         IL_0023:  ceq 
288         IL_0025:  br.s IL_0028
290         IL_0027:  ldc.i4.0 
291         IL_0028:  stloc.0 
292         IL_0029:  ldloc.0 
293         IL_002a:  brfalse.s IL_0030
295         IL_002c:  ldc.i4.0 
296         IL_002d:  stloc.1 
297         IL_002e:  br.s IL_0034
299         IL_0030:  ldc.i4.1 
300         IL_0031:  stloc.1 
301         IL_0032:  br.s IL_0034
303         IL_0034:  ldloc.1 
304         IL_0035:  ret 
305     } // end of method Program::Check
307     // method line 5
308     .method public static hidebysig 
309            default int32 Check (class MyArray 'array')  cil managed 
310     {
311         // Method begins at RVA 0x218c
312         // Code size 35 (0x23)
313         .maxstack 3
314         .locals init (
315                 int32   V_0)
316         IL_0000:  nop 
317         IL_0001:  ldarg.0 
318         IL_0002:  ldc.i4.0 
319         IL_0003:  callvirt instance valuetype Struct1 class MyArray::get_Item(int32)
320         IL_0008:  ldfld valuetype Struct2 Struct1::f2
321         IL_000d:  ldarg.0 
322         IL_000e:  ldc.i4.1 
323         IL_000f:  callvirt instance valuetype Struct1 class MyArray::get_Item(int32)
324         IL_0014:  ldfld valuetype Struct2 Struct1::f2
325         IL_0019:  call int32 class Program::Check(valuetype Struct2, valuetype Struct2)
326         IL_001e:  stloc.0 
327         IL_001f:  br.s IL_0021
329         IL_0021:  ldloc.0 
330         IL_0022:  ret 
331     } // end of method Program::Check
333     // method line 6
334     .method public static hidebysig 
335            default int32 Main (string[] args)  cil managed 
336     {
337         // Method begins at RVA 0x21bc
338         .entrypoint
339         // Code size 18 (0x12)
340         .maxstack 1
341         .locals init (
342                 class MyArray   V_0,
343                 int32   V_1)
344         IL_0000:  nop 
345         IL_0001:  newobj instance void class MyArray::'.ctor'()
346         IL_0006:  stloc.0 
347         IL_0007:  ldloc.0 
348         IL_0008:  call int32 class Program::Check(class MyArray)
349         IL_000d:  stloc.1 
350         IL_000e:  br.s IL_0010
352         IL_0010:  ldloc.1 
353         IL_0011:  ret 
354     } // end of method Program::Main
356     // method line 7
357     .method public hidebysig specialname rtspecialname 
358            instance default void '.ctor' ()  cil managed 
359     {
360         // Method begins at RVA 0x21da
361         // Code size 8 (0x8)
362         .maxstack 8
363         IL_0000:  ldarg.0 
364         IL_0001:  call instance void object::'.ctor'()
365         IL_0006:  nop 
366         IL_0007:  ret 
367     } // end of method Program::.ctor
369   } // end of class Program