diff --git a/Runtime/RuntimeApi.cs b/Runtime/RuntimeApi.cs index 03381b0..1ee67bb 100644 --- a/Runtime/RuntimeApi.cs +++ b/Runtime/RuntimeApi.cs @@ -6,6 +6,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; +using UnityEditor; using UnityEngine.Scripting; namespace HybridCLR @@ -29,6 +30,37 @@ namespace HybridCLR public static extern LoadImageErrorCode LoadMetadataForAOTAssembly(byte[] dllBytes, HomologousImageMode mode); #endif + /// + /// prejit method to avoid the jit cost of first time running + /// + /// + /// return true if method is jited, return false if method can't be jited + /// +#if UNITY_EDITOR + public static bool PreJitMethod(MethodInfo method) + { + return false; + } +#else + [MethodImpl(MethodImplOptions.InternalCall)] + public static extern bool PreJitMethod(MethodInfo method); +#endif + + /// + /// prejit all methods of class to avoid the jit cost of first time running + /// + /// + /// return true if class is jited, return false if class can't be jited +#if UNITY_EDITOR + public static bool PreJitClass(Type type) + { + return false; + } +#else + [MethodImpl(MethodImplOptions.InternalCall)] + public static extern bool PreJitClass(Type type); +#endif + /// /// get the maximum number of StackObjects in the interpreter thread stack (size*8 represents the final memory size occupied ///