1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4 
5 namespace System.Reflection
6 {
7     // This Enum matchs the CorMethodImpl defined in CorHdr.h
8     public enum MethodImplAttributes
9     {
10         // code impl mask
11         CodeTypeMask = 0x0003,   // Flags about code type.
12         IL = 0x0000,   // Method impl is IL.
13         Native = 0x0001,   // Method impl is native.
14         OPTIL = 0x0002,   // Method impl is OPTIL
15         Runtime = 0x0003,   // Method impl is provided by the runtime.
16                             // end code impl mask
17 
18         // managed mask
19         ManagedMask = 0x0004,   // Flags specifying whether the code is managed or unmanaged.
20         Unmanaged = 0x0004,   // Method impl is unmanaged, otherwise managed.
21         Managed = 0x0000,   // Method impl is managed.
22                             // end managed mask
23 
24         // implementation info and interop
25         ForwardRef = 0x0010,   // Indicates method is not defined; used primarily in merge scenarios.
26         PreserveSig = 0x0080,   // Indicates method sig is exported exactly as declared.
27 
28         InternalCall = 0x1000,   // Internal Call...
29 
30         Synchronized = 0x0020,   // Method is single threaded through the body.
31         NoInlining = 0x0008,   // Method may not be inlined.
32         AggressiveInlining = 0x0100,   // Method should be inlined if possible.
33         NoOptimization = 0x0040,   // Method may not be optimized.
34 
35         MaxMethodImplVal = 0xffff,
36     }
37 }
38