[发明专利]一种高效的动态类型转换的实现方法有效
申请号: | 201210124840.X | 申请日: | 2012-04-25 |
公开(公告)号: | CN102707947A | 公开(公告)日: | 2012-10-03 |
发明(设计)人: | 张超;韦韬;黎斯达;丁羽;陈兆丰;段镭;张利华;赵晓濛;徐先栋;李坤 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 余长江 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供一种高效的动态类型转换的实现方法,其步骤包括:编译器对源代码进行解析并构建类继承图、首基类图和首基类链;根据类继承图构建交叉转换域;根据首基类链划分下行转换域;为每个类创建thread表,并存储到编译后的二进制程序中;在每个类的虚函数表中增加指向所述thread表的指针、处理非公有继承的private表指针和转换域表,将该扩充后的虚函数表存储到编译后的二进制程序中;编译器为每一个dynamic_cast语句生成运行时代码,通过查找thread表、private表及转换域表完成动态类型转换。本发明用于编译器等设备中,可产生高效的可执行程序,提升程序的运行时性能。 | ||
搜索关键词: | 一种 高效 动态 类型 转换 实现 方法 | ||
【主权项】:
一种高效动态类型转换的实现方法,其步骤包括:1)编译器对源代码进行解析,根据解析结果在编译过程中构建类继承图和首基类图;并根据所述首基类图,构建首基类链;2)对于每个类,编译器根据其类继承图构建交叉转换域;并根据首基类链,将该类的父类中不属于其交叉转换域的类划分为若干下行转换域;3)对于每个类,编译器为其创建一thread表,并将其存储到编译后的二进制程序中;对于与该类的父类集合的交集非空的首基类链,该thread表为其保留一表项;4)编译器在每个类的所有虚函数表中分别增加一指向所述thread表的指针、一处理非公有继承的private表指针和一转换域表;对每个交叉/下行转换域,该转换域表为其保留一表项;将该扩充后的虚函数表存储到编译后的二进制程序中;5)对于每一个dynamic_cast语句,编译器生成运行时代码,通过查找源对象的thread表、private表以及转换域表完成动态类型转换。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201210124840.X/,转载请声明来源钻瓜专利网。
- 上一篇:电磁动力装置及具有该装置的汽车
- 下一篇:汽车主动防侧翻控制实车试验系统