// dnlib: See LICENSE.txt for more info using System; namespace dnlib.DotNet { /// /// Method impl attributes, see CorHdr.h/CorMethodImpl /// [Flags] public enum MethodImplAttributes : ushort { /// Flags about code type. CodeTypeMask = 0x0003, /// Method impl is IL. IL = 0x0000, /// Method impl is native. Native = 0x0001, /// Method impl is OPTIL OPTIL = 0x0002, /// Method impl is provided by the runtime. Runtime = 0x0003, /// Flags specifying whether the code is managed or unmanaged. ManagedMask = 0x0004, /// Method impl is unmanaged, otherwise managed. Unmanaged = 0x0004, /// Method impl is managed. Managed = 0x0000, /// Indicates method is defined; used primarily in merge scenarios. ForwardRef = 0x0010, /// Indicates method sig is not to be mangled to do HRESULT conversion. PreserveSig = 0x0080, /// Reserved for internal use. InternalCall = 0x1000, /// Method is single threaded through the body. Synchronized = 0x0020, /// Method may not be inlined. NoInlining = 0x0008, /// Method should be inlined if possible. AggressiveInlining = 0x0100, /// Method may not be optimized. NoOptimization = 0x0040, /// Method may contain hot code and should be aggressively optimized. AggressiveOptimization = 0x0200, /// The JIT compiler should look for security mitigation attributes, such as the user-defined System.Runtime.CompilerServices.SecurityMitigationsAttribute. If found, the JIT compiler applies any related security mitigations. Available starting with .NET Framework 4.8. SecurityMitigations = 0x0400, } }