forked from sin365/AxibugEmuOnline
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