栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

软件工程作业-方舟编译器学习笔记03-降级与格式转换

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

软件工程作业-方舟编译器学习笔记03-降级与格式转换

今天继续研究方舟前端mpl2mpl部分

⭐muid_replacement

实现由maple对user id的链接。
这个阶段主要是启用关于文本和数据结构的maple连接器。
首先要收集源码中的方法、类、vtable、itable等,然后生成相关的基本数据结构func_def、func_undef、data_def、data_undef等。
它将用def或undef替换有关方法和静态变量的相关引用,这就能有效减少代码冗余了。
总结来说,muid_replacement正如名称所言,主要功能,一是实现函数方法、类信息、虚函数表、接口函数表的信息的集成链接,二是通过宏定义替代一些方法和静态变量以优化代码。

⭐native_stub_func

这个阶段是java原生函数的处理。它为每个原生函数生成一个额外的 stubFunc,为调用实际原生函数做准备工作,包括参数映射、垃圾回收准备等。然后创建stubFunc的函数体。再对比syncenter中的函数类型,如果本地函数是同步的,则调用方法产生映射。
总结:这一部分是本地java函数的调用,观察源码发现主要是为调用做准备,比如调用java自带的parameter mapping参数映射、GC preparation垃圾回收函数等。
⭐reflection_analysis

生成classmetadata和classhashmetadata。元数据由三部分组成:类信息、字段、方法。我们根据定义的结构生成这些数据的reflection_analysis.h以及metadata_layout.h然后把它们的地址加到mirbuilder上。
总结:生成反射元数据,就是反射类元数据和类哈希码元数据。类元数据包括类信息、类域和类方法这三部分内容,本方法将这些内容生成地址数据,并添加到方舟中间表示层(MIR)中。
⭐vtable_analysis

这个阶段主要是生成虚函数表和接口表。虚表只存储虚函数地址,即方法的哈希码和函数地址。同时也把常用的函数移到前面的接口表中。如果哈希码出现了冲突,就将整个方法名存储在接口表后面的位置。
⭐vtable_impl

收集接口方法,将接口的调用层级降低给中端IR识别使用。

02、03前端总结
mpl2mpl这一部分十个phrase主要目的非常一致,一是实现语言的降级,把各种编程语言降级到中端IR能识别的层级,二是筛选出关键的类、方法、数据、异常处理等进行格式转换,让maple识别并调用。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/345391.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号