[发明专利]系统的提前编译方法和装置有效
申请号: | 201810152096.1 | 申请日: | 2018-02-14 |
公开(公告)号: | CN110162306B | 公开(公告)日: | 2023-06-23 |
发明(设计)人: | 聂久焘;曾利永;梅丽刚;黄岚之观 | 申请(专利权)人: | 斑马智行网络(香港)有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京君以信知识产权代理有限公司 11789 | 代理人: | 钱秀茹 |
地址: | 中国香港九龙长沙湾道*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 系统 提前 编译 方法 装置 | ||
1.一种动态编程语言系统的提前编译方法,其特征在于,包括:
根据源程序生成编译数据;
将所述编译数据所在的存储空间链接至内存管理单元;
依据存储空间的编译数据和指定格式生成提前编译文件;
将所述提前编译文件加载至所述内存管理单元。
2.根据权利要求1所述的方法,其特征在于,所述依据存储空间中的编译数据和指定格式生成提前编译文件的步骤包括:
获取提前编译文件的指定格式所包括的至少一个项目;
从所述编译数据中查找所述项目对应的项目内容,并写入所述提前编译文件。
3.根据权利要求2所述的方法,其特征在于,
所述项目包括如下至少其中之一:
文件头、程序字节码地址表、公用对象地址表、提前编译对象页面地址表、提前编译对象页表;
其中所述文件头包括源程序数量、公用对象数量和编译数据占用的存储空间信息。
4.根据权利要求3所述的方法,其特征在于,将所述提前编译文件加载至所述内存管理单元的步骤包括:
将所述文件头映射至系统的系统存储空间;
获取提前编译文件中与所述文件头中的源程序数量、公用对象数量、编译数据占用的存储空间信息对应的目标信息,并将该目标信息映射至系统存储空间;以及
将映射至所述系统存储空间的目标信息加载到所述内存管理单元。
5.根据权利要求4所述的方法,其特征在于,将所述提前编译文件加载至所述内存管理单元的步骤还包括:
禁止内存管理单元的内存分配申请。
6.根据权利要求4所述的方法,其特征在于,所述将所述提前编译文件加载至所述内存管理单元的步骤还包括:
对比动态编程语言系统的系统符号表与提前编译文件的符号表;
当所述系统符号表与所述提前编译文件的符号表存在相同符号时,将相同符号在系统符号表中的地址替换为所述提前编译文件的符号表中的地址。
7.根据权利要求1所述的方法,其特征在于,在将所述提前编译文件加载至所述内存管理单元的步骤之后,所述方法还包括:
初始化系统;以及
运行所述源程序。
8.根据权利要求7所述的方法,其特征在于,所述运行源程序的步骤包括:
根据所述提前编译文件建立检索数据结构,所述检索数据结构包括动态语言程序名称和对应的字节码地址;
在该检索数据结构中查找是否存在目标动态语言程序名称;
当该检索数据结构中存在该目标动态语言程序名称时,获取该目标动态语言程序名称对应的字节码地址;
根据该字节码地址加载字节码。
9.根据权利要求1所述的方法,其特征在于,将所述编译数据所在的存储空间链接至内存管理单元的步骤包括:
获取编译数据中的根节点对象;
确定根节点对象对应的子节点对象;
将所述根节点对象和所述子节点对象移动至所述存储空间中;
将所述存储空间链接到所述内存管理单元。
10.根据权利要求9所述的方法,其特征在于,所述存储空间包括存储页,所述存储页的格式与所述动态编程语言系统的系统存储空间的格式匹配。
11.根据权利要求9所述的方法,其特征在于,将所述根节点对象和所述子节点对象移动至所述存储空间中的步骤之后,所述方法还包括:
记录所述根节点对象和所述子节点对象移动前的存储地址和移动后的存储地址;以及
根据移动前的存储地址和移动后的存储地址更新所述存储空间内的对象引用关系。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于斑马智行网络(香港)有限公司,未经斑马智行网络(香港)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810152096.1/1.html,转载请声明来源钻瓜专利网。