Welcome

首页 / 软件开发 / .NET编程技术 / .Net Discovery系列之六 Me JIT(下)

.Net Discovery系列之六 Me JIT(下)2011-01-19 博客园 缘清接上文

在初始化时,HashTable中各个方法指向的并不是对应的内存入口地址,而是一个JIT预编译代理,这个函数负责将方法编译为本地代码。注意,这里JIT还没有进行编译,只是建立了方法表!

下表(表1)为首次加载调用时HashTable的情况:

表1 方法表示意

方法槽方法描述
a1()PreJitStub
a2()PreJitStub
a3()PreJitStub

好了有了这个HashTable后,JIT开始编译第一个被调用的方法A.a1("First"),这是由一个JIT内部函数来完成的(上面提到的),遗憾的事,目前还没有发现介绍这个函数的相关资料,有些书中称它为“JIT编译者”,那本文也这么称呼它吧。

下图为首次调用方法时的示意图:

图2 触发JIT编译