67 lines
2.7 KiB
C#
67 lines
2.7 KiB
C#
|
using System;
|
||
|
|
||
|
namespace System.Runtime
|
||
|
{
|
||
|
[AttributeUsage(AttributeTargets.Assembly, Inherited = false)]
|
||
|
public sealed class AssemblyTargetedPatchBandAttribute : Attribute
|
||
|
{
|
||
|
private String m_targetedPatchBand;
|
||
|
|
||
|
public AssemblyTargetedPatchBandAttribute(String targetedPatchBand)
|
||
|
{
|
||
|
m_targetedPatchBand = targetedPatchBand;
|
||
|
}
|
||
|
|
||
|
public String TargetedPatchBand
|
||
|
{
|
||
|
get { return m_targetedPatchBand; }
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// This attribute seems particularly prone to accidental inclusion in bcl.small
|
||
|
// We would only want to do so intentionally (if targeted patching were enabled there)
|
||
|
#if !FEATURE_CORECLR
|
||
|
|
||
|
//============================================================================================================
|
||
|
// [TargetedPatchingOptOutAttribute("Performance critical to inline across NGen image boundaries")] -
|
||
|
// Sacrifices cheap servicing of a method body in order to allow unrestricted inlining. Certain types of
|
||
|
// trivial methods (e.g. simple property getters) are automatically attributed by ILCA.EXE during the build.
|
||
|
// For other performance critical methods, it should be added manually.
|
||
|
//============================================================================================================
|
||
|
|
||
|
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor, AllowMultiple = false, Inherited = false)]
|
||
|
public sealed class TargetedPatchingOptOutAttribute : Attribute
|
||
|
{
|
||
|
private String m_reason;
|
||
|
|
||
|
public TargetedPatchingOptOutAttribute(String reason)
|
||
|
{
|
||
|
m_reason = reason;
|
||
|
}
|
||
|
|
||
|
public String Reason
|
||
|
{
|
||
|
get { return m_reason; }
|
||
|
}
|
||
|
|
||
|
private TargetedPatchingOptOutAttribute() { }
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
|
||
|
//============================================================================================================
|
||
|
// [ForceTokenStabilization] - Using this CA forces ILCA.EXE to stabilize the attached type, method or field.
|
||
|
// We use this to identify private helper methods invoked by IL stubs.
|
||
|
//
|
||
|
// NOTE: Attaching this to a type is NOT equivalent to attaching it to all of its methods!
|
||
|
//============================================================================================================
|
||
|
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface | AttributeTargets.Delegate |
|
||
|
AttributeTargets.Method | AttributeTargets.Constructor |
|
||
|
AttributeTargets.Field
|
||
|
, AllowMultiple = false, Inherited = false)]
|
||
|
sealed class ForceTokenStabilizationAttribute : Attribute
|
||
|
{
|
||
|
public ForceTokenStabilizationAttribute() { }
|
||
|
}
|
||
|
}
|