Bump corefx
[mono.git] / mcs / class / corlib / System.Runtime.CompilerServices / Unsafe.il
1 // Simplified version of ../../../external/corefx/src/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.il
2
3 .class public abstract auto ansi sealed beforefieldinit System.Runtime.CompilerServices.Unsafe
4 {
5   .method public hidebysig static !!T Read<T>(void* source) cil managed aggressiveinlining
6   {
7
8         .maxstack 1
9         ldarg.0
10         ldobj !!T
11         ret
12   }
13
14   .method public hidebysig static !!T ReadUnaligned<T>(void* source) cil managed aggressiveinlining
15   {
16
17         .maxstack 1
18         ldarg.0
19         unaligned. 0x1
20         ldobj !!T
21         ret
22   }
23   
24   .method public hidebysig static !!T ReadUnaligned<T>(uint8& source) cil managed aggressiveinlining
25   {
26
27         .maxstack 1
28         ldarg.0
29         unaligned. 0x1
30         ldobj !!T
31         ret
32   }
33   
34   .method public hidebysig static void Write<T>(void* destination,
35                                                  !!T 'value') cil managed aggressiveinlining
36   {
37
38         .maxstack 2
39         ldarg.0
40         ldarg.1
41         stobj !!T
42         ret
43   }
44
45   .method public hidebysig static void WriteUnaligned<T>(void* destination,
46                                                  !!T 'value') cil managed aggressiveinlining
47   {
48
49         .maxstack 2
50         ldarg.0
51         ldarg.1
52         unaligned. 0x01
53         stobj !!T
54         ret
55   }
56
57   .method public hidebysig static void WriteUnaligned<T>(uint8& destination,
58                                                  !!T 'value') cil managed aggressiveinlining
59   {
60
61         .maxstack 2
62         ldarg.0
63         ldarg.1
64         unaligned. 0x01
65         stobj !!T
66         ret
67   }
68
69   .method public hidebysig static void Copy<T>(void* destination,
70                                                 !!T& source) cil managed aggressiveinlining
71   {
72
73         .maxstack 2
74         ldarg.0
75         ldarg.1
76         ldobj !!T
77         stobj !!T
78         ret
79   }
80
81   .method public hidebysig static void Copy<T>(!!T& destination,
82                                                 void* source) cil managed aggressiveinlining
83   {
84
85         .maxstack 2
86         ldarg.0
87         ldarg.1
88         ldobj !!T
89         stobj !!T
90         ret
91   }
92
93   .method public hidebysig static void* AsPointer<T>(!!T& 'value') cil managed aggressiveinlining
94   {
95
96         .maxstack 1
97         ldarg.0
98         conv.u
99         ret
100   }
101
102   .method public hidebysig static int32 SizeOf<T>() cil managed aggressiveinlining
103   {
104
105         .maxstack 1
106         sizeof !!T
107         ret
108   }
109
110   .method public hidebysig static void CopyBlock(void* destination, void* source, uint32 byteCount) cil managed aggressiveinlining
111   {
112
113         .maxstack 3
114         ldarg.0
115         ldarg.1
116         ldarg.2
117         cpblk
118         ret
119   }
120
121   .method public hidebysig static void CopyBlock(uint8& destination, uint8& source, uint32 byteCount) cil managed aggressiveinlining
122   {
123
124         .maxstack 3
125         ldarg.0
126         ldarg.1
127         ldarg.2
128         cpblk
129         ret
130   }
131
132   .method public hidebysig static void CopyBlockUnaligned(void* destination, void* source, uint32 byteCount) cil managed aggressiveinlining
133   {
134
135         .maxstack 3
136         ldarg.0
137         ldarg.1
138         ldarg.2
139         unaligned. 0x1
140         cpblk
141         ret
142   }
143
144   .method public hidebysig static void CopyBlockUnaligned(uint8& destination, uint8& source, uint32 byteCount) cil managed aggressiveinlining
145   {
146
147         .maxstack 3
148         ldarg.0
149         ldarg.1
150         ldarg.2
151         unaligned. 0x1
152         cpblk
153         ret
154   }
155
156   .method public hidebysig static void InitBlock(void* startAddress, uint8 'value', uint32 byteCount) cil managed aggressiveinlining
157   {
158
159         .maxstack 3
160         ldarg.0
161         ldarg.1
162         ldarg.2
163         initblk
164         ret
165   }
166
167   .method public hidebysig static void InitBlock(uint8& startAddress, uint8 'value', uint32 byteCount) cil managed aggressiveinlining
168   {
169
170         .maxstack 3
171         ldarg.0
172         ldarg.1
173         ldarg.2
174         initblk
175         ret
176   }
177
178   .method public hidebysig static void InitBlockUnaligned(void* startAddress, uint8 'value', uint32 byteCount) cil managed aggressiveinlining
179   {
180
181         .maxstack 3
182         ldarg.0
183         ldarg.1
184         ldarg.2
185         unaligned. 0x1
186         initblk
187         ret
188   }
189
190   .method public hidebysig static void InitBlockUnaligned(uint8& startAddress, uint8 'value', uint32 byteCount) cil managed aggressiveinlining
191   {
192
193         .maxstack 3
194         ldarg.0
195         ldarg.1
196         ldarg.2
197         unaligned. 0x1
198         initblk
199         ret
200   }
201
202   .method public hidebysig static !!T As<class T>(object o) cil managed aggressiveinlining
203   {
204
205         .maxstack 1
206         ldarg.0
207         ret
208   }
209
210   .method public hidebysig static !!T& AsRef<T>(void* source) cil managed aggressiveinlining
211   {
212
213         .locals (int32&)
214         .maxstack 1
215         ldarg.0
216         // Roundtrip via a local to avoid type mismatch on return that the JIT inliner chokes on.
217         stloc.0
218         ldloc.0
219         ret
220   }
221
222   .method public hidebysig static !!TTo& As<TFrom, TTo>(!!TFrom& source) cil managed aggressiveinlining
223   {
224
225         .maxstack 1
226         ldarg.0
227         ret
228   }
229
230   .method public hidebysig static !!T& Add<T>(!!T& source, int32 elementOffset) cil managed aggressiveinlining
231   {
232
233         .maxstack 3
234         ldarg.0
235         ldarg.1
236         sizeof !!T
237         conv.i
238         mul
239         add
240         ret
241   }
242
243   .method public hidebysig static void* Add<T>(void* source, int32 elementOffset) cil managed aggressiveinlining
244   {
245
246         .maxstack 3
247         ldarg.0
248         ldarg.1
249         sizeof !!T
250         conv.i
251         mul
252         add
253         ret
254   }
255
256   .method public hidebysig static !!T& Add<T>(!!T& source, native int elementOffset) cil managed aggressiveinlining
257   {
258
259         .maxstack 3
260         ldarg.0
261         ldarg.1
262         sizeof !!T
263         mul
264         add
265         ret
266   }
267
268   .method public hidebysig static !!T& AddByteOffset<T>(!!T& source, native int byteOffset) cil managed aggressiveinlining
269   {
270
271         .maxstack 2
272         ldarg.0
273         ldarg.1
274         add
275         ret
276   }
277
278   .method public hidebysig static !!T& Subtract<T>(!!T& source, int32 elementOffset) cil managed aggressiveinlining
279   {
280
281         .maxstack 3
282         ldarg.0
283         ldarg.1
284         sizeof !!T
285         conv.i
286         mul
287         sub
288         ret
289   }
290
291   .method public hidebysig static void* Subtract<T>(void* source, int32 elementOffset) cil managed aggressiveinlining
292   {
293
294         .maxstack 3
295         ldarg.0
296         ldarg.1
297         sizeof !!T
298         conv.i
299         mul
300         sub
301         ret
302   }
303
304   .method public hidebysig static !!T& Subtract<T>(!!T& source, native int elementOffset) cil managed aggressiveinlining
305   {
306
307         .maxstack 3
308         ldarg.0
309         ldarg.1
310         sizeof !!T
311         mul
312         sub
313         ret
314   }
315
316   .method public hidebysig static !!T& SubtractByteOffset<T>(!!T& source, native int byteOffset) cil managed aggressiveinlining
317   {
318
319         .maxstack 2
320         ldarg.0
321         ldarg.1
322         sub
323         ret
324   }
325
326   .method public hidebysig static native int ByteOffset<T>(!!T& origin, !!T& target) cil managed aggressiveinlining
327   {
328
329         .maxstack 2
330         ldarg.1
331         ldarg.0
332         sub
333         ret
334   }
335
336   .method public hidebysig static bool AreSame<T>(!!T& left, !!T& right) cil managed aggressiveinlining
337   {
338
339         .maxstack 2
340         ldarg.0
341         ldarg.1
342         ceq
343         ret
344   }
345
346 }