我想了解jit内联是多么普遍。
假设在我的代码中,我从saySystem.IO程序集中调用某个函数,并将回调引用传递给代码中实现的函数,以便从该函数内部调用该函数。在我的函数中有System.IO调用。因此,如果我的回调内联到GetCallingAssembly()中,那么对System.IO的调用(最初是在我的代码中进行的,并打算说“current”方法是从GetCallingAssembly()内部调用的)将表示它现在是从我的代码内部调用的。
这样的内联是可能的,还是.NET运行时程序集的处理方式不同,因此不允许将用户代码JIT内联到.NET运行时代码中?

最佳答案

可以安全地假设回调不会内联。.NET框架程序集总是在安装时由ngen.exe预先进行jit,以后无法更改该代码。此外,即使抖动优化器可以推断委托的目标方法可能是什么,通过委托的回调也永远不会内联。

09-10 08:48
查看更多