-
Notifications
You must be signed in to change notification settings - Fork 4.7k
/
InvalidCSharp.il
188 lines (169 loc) · 5.73 KB
/
InvalidCSharp.il
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
.assembly extern System.Runtime { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) }
.assembly InvalidCSharp { }
.class public sequential ansi sealed beforefieldinit InvalidCSharp.InvalidStructWithRefField
extends [System.Runtime]System.ValueType
{
// Type requires IsByRefLikeAttribute to be valid.
.field public string& Invalid
}
.class public explicit ansi sealed beforefieldinit InvalidCSharp.InvalidRefFieldAlignment
extends [System.Runtime]System.ValueType
{
.custom instance void [System.Runtime]System.Runtime.CompilerServices.IsByRefLikeAttribute::.ctor() = (
01 00 00 00
)
.field [0] public int16 Field
.field [2] public int32& Invalid
}
.class public explicit ansi sealed beforefieldinit InvalidCSharp.InvalidObjectRefRefFieldOverlap
extends [System.Runtime]System.ValueType
{
.custom instance void [System.Runtime]System.Runtime.CompilerServices.IsByRefLikeAttribute::.ctor() = (
01 00 00 00
)
.field [0] public object Field
.field [0] public int32& Invalid
}
// This is invalid metadata and is unable to be loaded.
// - [field sig] (0x80131815 (VER_E_FIELD_SIG))
//
// .class public sequential ansi sealed beforefieldinit InvalidCSharp.InvalidStructWithStaticRefField
// extends [System.Runtime]System.ValueType
// {
// .custom instance void [System.Runtime]System.Runtime.CompilerServices.IsByRefLikeAttribute::.ctor() = (
// 01 00 00 00
// )
// .field public static string& Invalid
// }
.class public explicit ansi sealed beforefieldinit InvalidCSharp.IntPtrRefFieldOverlap
extends [System.Runtime]System.ValueType
{
.custom instance void [System.Runtime]System.Runtime.CompilerServices.IsByRefLikeAttribute::.ctor() = (
01 00 00 00
)
.field [0] public native int Field
.field [0] public int32& Invalid
}
.class public sequential ansi sealed beforefieldinit InvalidCSharp.InnerValidByRef
extends [System.Runtime]System.ValueType
{
.custom instance void [System.Runtime]System.Runtime.CompilerServices.IsByRefLikeAttribute::.ctor() = (
01 00 00 00
)
.field public int32& Field
.field public int32 Size
}
.class public explicit ansi sealed beforefieldinit InvalidCSharp.IntPtrOverlapWithInnerFieldType
extends [System.Runtime]System.ValueType
{
.custom instance void [System.Runtime]System.Runtime.CompilerServices.IsByRefLikeAttribute::.ctor() = (
01 00 00 00
)
.field [0] public native int Field
// This field's valid Type would illegally overlap this type's first field using a precise GC.
.field [0] public valuetype InvalidCSharp.InnerValidByRef Invalid
}
.class public sequential ansi sealed beforefieldinit InvalidCSharp.WithRefField
extends [System.Runtime]System.ValueType
{
.custom instance void [System.Runtime]System.Runtime.CompilerServices.IsByRefLikeAttribute::.ctor() = (
01 00 00 00
)
.field public string& Str
.method public hidebysig specialname rtspecialname
instance void .ctor (
string&
) cil managed
{
ldarg.0
ldarg.1
stfld string& InvalidCSharp.WithRefField::Str
ret
}
.method public hidebysig
instance bool ConfirmFieldInstance (
string
) cil managed
{
ldarg.0
ldfld string& InvalidCSharp.WithRefField::Str
ldind.ref
ldarg.1
ceq
ret
}
}
.class public sequential ansi sealed beforefieldinit InvalidCSharp.WithRefStructField
extends [System.Runtime]System.ValueType
{
.custom instance void [System.Runtime]System.Runtime.CompilerServices.IsByRefLikeAttribute::.ctor() = (
01 00 00 00
)
.field public valuetype InvalidCSharp.WithRefField& Field
.method public hidebysig specialname rtspecialname
instance void .ctor (
valuetype InvalidCSharp.WithRefField&
) cil managed
{
ldarg.0
ldarg.1
stfld valuetype InvalidCSharp.WithRefField& InvalidCSharp.WithRefStructField::Field
ret
}
.method public hidebysig
instance bool ConfirmFieldInstance (
valuetype InvalidCSharp.WithRefField&
) cil managed
{
ldarg.0
ldfld valuetype InvalidCSharp.WithRefField& InvalidCSharp.WithRefStructField::Field
ldind.ref
ldarg.1
ldind.ref
ceq
ret
}
}
.class public sequential ansi sealed beforefieldinit InvalidCSharp.WithTypedReferenceField`1<T>
extends [System.Runtime]System.ValueType
{
.custom instance void [System.Runtime]System.Runtime.CompilerServices.IsByRefLikeAttribute::.ctor() = (
01 00 00 00
)
.field public typedref Field
.method public hidebysig specialname rtspecialname
instance void .ctor (
!T&
) cil managed
{
ldarg.0
ldarg.1
mkrefany !T
stfld typedref valuetype InvalidCSharp.WithTypedReferenceField`1<!T>::Field
ret
}
.method public hidebysig
instance class [System.Runtime]System.Type GetFieldType () cil managed
{
ldarg.0
ldfld typedref valuetype InvalidCSharp.WithTypedReferenceField`1<!T>::Field
refanytype
call class [System.Runtime]System.Type [System.Runtime]System.Type::GetTypeFromHandle(valuetype [System.Runtime]System.RuntimeTypeHandle )
ret
}
.method public hidebysig
instance bool ConfirmFieldInstance (
!T
) cil managed
{
ldarg.0
ldfld typedref valuetype InvalidCSharp.WithTypedReferenceField`1<!T>::Field
refanyval !T
ldind.ref
ldarg.1
ceq
ret
}
}