5

JITインライン化がどのようにユビキタスになるかを理解したいと思います。

私のコードで、たとえばSystem.IOアセンブリから関数を呼び出し、そのSystem.IO関数内から呼び出されるように、コードに実装されている関数にコールバック参照を渡すとします。私の機能にはGetCallingAssembly()呼び出しがあります。したがって、コールバックが元々コード内にあっSystem.IOた呼び出しにインライン化されGetCallingAssembly()、「現在の」メソッドが内部から呼び出されることを意図していたSystem.IO場合、コード内から呼び出されるようになりました。

このようなインライン化は可能ですか?それとも、.NET ランタイム コードへのユーザー コードの JIT インライン化が許可されないように、.NET ランタイム アセンブリの処理が異なるのでしょうか?

4

1 に答える 1

3

コールバックがインライン化されないと安全に想定できます。.NET Framework アセンブリは、インストール時に常に ngen.exe によって pre-jit されます。後でそのコードを変更するオプションはありません。さらに、ジッター オプティマイザーがデリゲートのターゲット メソッドが何であるかを推測できたとしても、デリゲートを介したコールバックは決してインライン化されません。

于 2012-10-01T13:02:07.993 に答える