JIT compilation converts MSIL to native code on demand at application run time, when the contents of an assembly are loaded and executed. Because the common language runtime supplies a JIT compiler for each supported CPU architecture, developers can build a set of MSIL assemblies that can be JIT-compiled and run on different computers with different machine architectures. However, your managed code will run only on a specific operating system if it calls platform-specific native APIs, or a platform-specific class library.
JIT compilation takes into account the
fact that some code might never get called during execution. Rather than using
time and memory to convert all the MSIL in a portable executable (PE) file to
native code, it converts the MSIL as needed during execution and stores the
resulting native code in memory so that it is accessible for subsequent calls
in the context of that process.
The loader creates and attaches a stub to each
method in a type when the type is loaded and initialized. When a method is
called for the first time, the stub passes control to the JIT compiler, which
converts the MSIL for that method into native code and modifies the stub to
point directly to the generated native code. Subsequent calls to the
JIT-compiled method therefore proceed directly to the native code
No comments:
Post a Comment