ART 的 interpret-only模式源码及调用流程 & QuickCompiler后端调用流程

本文详细介绍了Android ART运行时的interpret-only模式,从build.prop配置到dex2oat的调用过程,以及Quick Compiler在ART中的作用。在interpret-only模式下,编译器被设置为仅解释模式,适用于特定指令集。同时,文章还探讨了ART后端选择Quick Compiler还是Optimizing Compiler的执行路径。
摘要由CSDN通过智能技术生成
在文件compiler/dex/quick/quick_compiler.cc中取消 kCompilerDebugFlags 的注释,重新在根目录下编译,替换启动盘中相应的动态库。
用eclipse写一个Helloworld程序安装到android系统中,或者在 /data/dalvik-cache/ 目录下删除一个应用程序的oat文件(classes.dex文件),重启系统。根据Logcat日志查看dex2oat调用路径。


 一.ART 的 interpret-only 模式执行路径:



int main(...) --> art::dex2oat(...) --> CompileApp(dex2oat) --> dex2oat.Compile()  --> driver_->CompileAll(...) -->  Compile(...) --> CompileDexFile(...) --> context.ForAll(...) --> 
CompilerDriver::CompileClass(...) --> driver->CompileMethod(...) --> (*dex_to_dex_compiler)(...) -->  ArtCompileDEX(...)  -->  dex_compiler.Compile()
在dex_compiler.Compile()函数中有四类操作码的替换:
CompileReturnVoid(...): 在需要 barrier 的地方将 RETURN-VOID 替换为 RETURN-VOID-BARRIER。
CompileCheckCast(...): 将 CHECK-CAST 替换为 2 个 NOP 指令。
CompileInstanceFieldAccess(...): 将获取字段的方式由通过索引获取替
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值