// 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,
}
}