JIT 内联是否可以将我的代码内联到某些 .NET 运行时程序集代码中



我想了解JIT内联的普遍性。

假设在我的代码中,我从程序集调用某个函数System.IO并将回调引用传递给我的代码中实现的函数,以便从该System.IO函数内部调用。在我的函数中,有GetCallingAssembly()调用。因此,如果我的回调被内联到System.IOGetCallingAssembly()的调用中,该调用最初在我的代码中,并且旨在说"当前"方法是从内部调用的,System.IO会说它现在是从我的代码内部调用的。

这种内联是否可行,或者 .NET 运行时程序集的处理方式是否不同,因此不允许将用户代码 JIT 内联到 .NET 运行时代码中?

您可以放心地假设回调不会被内联。 .NET Framework 程序集始终由 ngen 预先启动.exe在安装时,之后没有更改该代码的选项。 此外,通过委托的回调永远不会内联,即使抖动优化器可以推断出委托的目标方法可能是什么。

最新更新