-
公开(公告)号:CN102707947B
公开(公告)日:2015-03-04
申请号:CN201210124840.X
申请日:2012-04-25
Applicant: 北京大学
IPC: G06F9/44
Abstract: 本发明提供一种高效的动态类型转换的实现方法,其步骤包括:编译器对源代码进行解析并构建类继承图、首基类图和首基类链;根据类继承图构建交叉转换域;根据首基类链划分下行转换域;为每个类创建thread表,并存储到编译后的二进制程序中;在每个类的虚函数表中增加指向所述thread表的指针、处理非公有继承的private表指针和转换域表,将该扩充后的虚函数表存储到编译后的二进制程序中;编译器为每一个dynamic_cast语句生成运行时代码,通过查找thread表、private表及转换域表完成动态类型转换。本发明用于编译器等设备中,可产生高效的可执行程序,提升程序的运行时性能。
-
公开(公告)号:CN102707947A
公开(公告)日:2012-10-03
申请号:CN201210124840.X
申请日:2012-04-25
Applicant: 北京大学
IPC: G06F9/44
Abstract: 本发明提供一种高效的动态类型转换的实现方法,其步骤包括:编译器对源代码进行解析并构建类继承图、首基类图和首基类链;根据类继承图构建交叉转换域;根据首基类链划分下行转换域;为每个类创建thread表,并存储到编译后的二进制程序中;在每个类的虚函数表中增加指向所述thread表的指针、处理非公有继承的private表指针和转换域表,将该扩充后的虚函数表存储到编译后的二进制程序中;编译器为每一个dynamic_cast语句生成运行时代码,通过查找thread表、private表及转换域表完成动态类型转换。本发明用于编译器等设备中,可产生高效的可执行程序,提升程序的运行时性能。
-