一.Dalvik的JIT编译流程
Dalvik JIT是一个tracing JIT(也叫trace-based JIT),其中间表示分为两种,MIR与LIR。MIR与LIR节点各自形成链表,分别被组织在BasicBlock与CompilationUnit中。
编译流程是:
0、创建CompilationUnit对象(一个trace对应一个CompilationUnit)来存放一次编译中需要的信息:CompilationUnit cUnit;;
1、将dex文件中的Dalvik字节码解码为DecodedInstruction,并创建对应的MIR节点(一条dalvik字节码对应若干个MIR):parseInsn(...);
2、并创建相应的BasicBlock对象,将MIR塞进去(一个trace被划分为多个BasicBlock,每个BasicBlock包含多个MIR):dvmCompilerAppendMIR(...);