检测JIT是否可用

Kru*_*lur 7 c# jit xamarin

什么是规范(如果有的话,任何可靠的)检测JIT引擎是否以便携方式可用的方式?

例如,Xamarin.iOS不支持JIT,因为iOS平台强制执行DEP.Mono很擅长通过解释像lambda表达式这样的大多数事情来弥合差距,但有些事情没有(正确)实现,导致运行时异常严重损害性能.

如果可能,我想从共享的可移植类库中执行此检测.

Kru*_*lur 1

在深入研究了 Mono 源代码之后,似乎“神奇”的构建时属性是FULL_AOT_RUNTIME. 例如,System.Reflection.Emit.AssemblyBuilder根据未设置此属性进行条件编译,这意味着

var canJit = Type.GetType ("System.Reflection.Emit.AssemblyBuilder") != null;
Run Code Online (Sandbox Code Playgroud)

应该给我我想要的。