Il2CppSetOptionAttribute
This commit is contained in:
parent
e83beaa813
commit
c3c9d97f7d
@ -0,0 +1,74 @@
|
||||
using System;
|
||||
|
||||
namespace Unity.IL2CPP.CompilerServices
|
||||
{
|
||||
/// <summary>
|
||||
/// The code generation options available for IL to C++ conversion.
|
||||
/// Enable or disabled these with caution.
|
||||
/// </summary>
|
||||
public enum Option
|
||||
{
|
||||
/// <summary>
|
||||
/// Enable or disable code generation for null checks.
|
||||
///
|
||||
/// Global null check support is enabled by default when il2cpp.exe
|
||||
/// is launched from the Unity editor.
|
||||
///
|
||||
/// Disabling this will prevent NullReferenceException exceptions from
|
||||
/// being thrown in generated code. In *most* cases, code that dereferences
|
||||
/// a null pointer will crash then. Sometimes the point where the crash
|
||||
/// happens is later than the location where the null reference check would
|
||||
/// have been emitted though.
|
||||
/// </summary>
|
||||
NullChecks = 1,
|
||||
/// <summary>
|
||||
/// Enable or disable code generation for array bounds checks.
|
||||
///
|
||||
/// Global array bounds check support is enabled by default when il2cpp.exe
|
||||
/// is launched from the Unity editor.
|
||||
///
|
||||
/// Disabling this will prevent IndexOutOfRangeException exceptions from
|
||||
/// being thrown in generated code. This will allow reading and writing to
|
||||
/// memory outside of the bounds of an array without any runtime checks.
|
||||
/// Disable this check with extreme caution.
|
||||
/// </summary>
|
||||
ArrayBoundsChecks = 2,
|
||||
/// <summary>
|
||||
/// Enable or disable code generation for divide by zero checks.
|
||||
///
|
||||
/// Global divide by zero check support is disabled by default when il2cpp.exe
|
||||
/// is launched from the Unity editor.
|
||||
///
|
||||
/// Enabling this will cause DivideByZeroException exceptions to be
|
||||
/// thrown in generated code. Most code doesn't need to handle this
|
||||
/// exception, so it is probably safe to leave it disabled.
|
||||
/// </summary>
|
||||
DivideByZeroChecks = 3,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Use this attribute on an assembly, struct, class, method, or property to inform the IL2CPP code conversion utility to override the
|
||||
/// global setting for one of a few different runtime checks.
|
||||
///
|
||||
/// Example:
|
||||
///
|
||||
/// [Il2CppSetOption(Option.NullChecks, false)]
|
||||
/// public static string MethodWithNullChecksDisabled()
|
||||
/// {
|
||||
/// var tmp = new Object();
|
||||
/// return tmp.ToString();
|
||||
/// }
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Struct | AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Delegate, Inherited = false, AllowMultiple = true)]
|
||||
public class Il2CppSetOptionAttribute : Attribute
|
||||
{
|
||||
public Option Option { get; private set; }
|
||||
public object Value { get; private set; }
|
||||
|
||||
public Il2CppSetOptionAttribute(Option option, object value)
|
||||
{
|
||||
Option = option;
|
||||
Value = value;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1fa3bc95a1fade84eb4f44a94a7409b5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Loading…
Reference in New Issue
Block a user