The CLR execution model contains different components for implementation. As you saw in Chapter 6, the assembly loader of the CLR is used to load the assembly, which contains the IL code and metadata for the application that is executing the CLR. The class loader component loads any type defined in the application assembly or external types that reside in other assemblies. When the types are laid out in the memory, the execution engine can execute the code of that assembly. But, as mentioned earlier, the IL code is not directly executable by the CPU but rather requires compiling into native code. The CLR component piece that does this is called the JIT compiler. In this chapter, you will learn about the JIT compiler.