【技术实现步骤摘要】
一种接口方法表生成方法、函数指针查询方法及装置
本申请涉及计算机
,具体涉及一种接口方法表生成方法、函数指针查询方法及装置。
技术介绍
Java类支持多继承的接口机制,也就是说,一个Java类往往能够实现多个接口函数。这种情况下,为了便于Java类查询接口函数的函数指针,通常需要为Java类创建相应的接口方法表(interfacemethodtable,Itab)。其中,每个Java类的Itab包括哈希表和冲突消除表。在为一个Java类创建Itab的过程中,首先,确定该Java类可实现的各个接口函数,并确定哈希表的大小和哈希算法;然后,通过已确定的哈希算法和各个接口函数的函数签名,分别计算所述各个接口函数的哈希值;其中,如果某一个接口函数的哈希值与其他各个接口函数的哈希值均不存在哈希冲突,则根据该接口函数的哈希值,确定该接口函数在哈希表中的索引,并将该接口函数的函数指针存储至该索引所指示的位置,以获取该Java类的哈希表;另外,若某一个接口函数的哈希值与其他接口函数的哈希值存在哈希冲突,则将该接口函数的函数签名 ...
【技术保护点】
1.一种接口方法表生成方法,其特征在于,包括:/n基于目标Java类可实现的各个接口函数的数量,生成所述目标Java类的哈希表,所述哈希表的大小为所述接口函数的数量与预设系数的乘积;/n确定所述目标Java类的哈希算法;/n基于所述目标Java类的哈希算法和所述各个接口函数的函数签名,确定所述各个接口函数的哈希值;/n基于第一接口函数的哈希值和所述哈希表的大小,确定所述第一接口函数的函数指针在所述哈希表中的索引,并将所述第一接口函数的函数指针存储至所述索引指示的位置,所述第一接口函数为与其他接口函数不存在哈希冲突的接口函数;/n将第二接口函数的函数签名和函数指针存储至冲突消 ...
【技术特征摘要】
1.一种接口方法表生成方法,其特征在于,包括:
基于目标Java类可实现的各个接口函数的数量,生成所述目标Java类的哈希表,所述哈希表的大小为所述接口函数的数量与预设系数的乘积;
确定所述目标Java类的哈希算法;
基于所述目标Java类的哈希算法和所述各个接口函数的函数签名,确定所述各个接口函数的哈希值;
基于第一接口函数的哈希值和所述哈希表的大小,确定所述第一接口函数的函数指针在所述哈希表中的索引,并将所述第一接口函数的函数指针存储至所述索引指示的位置,所述第一接口函数为与其他接口函数不存在哈希冲突的接口函数;
将第二接口函数的函数签名和函数指针存储至冲突消除表,所述第二接口函数为与其他接口函数存在哈希冲突的接口函数。
2.根据权利要求1所述的方法,其特征在于,还包括:
将所述哈希表的大小存储至所述目标Java类的元数据信息中。
3.根据权利要求1所述的方法,其特征在于,所述基于第一接口函数的哈希值和所述哈希表的大小,确定所述第一接口函数的函数指针在所述哈希表中的索引,包括:
对所述第一接口函数的哈希值与所述哈希表的大小进行取余操作;
确定通过取余操作获取的余数为所述第一接口函数的函数指针在所述哈希表中的索引。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述确定所述目标Java类的哈希算法,包括:
分别通过各种哈希算法与所述各个接口函数的函数签名,计算所述各个接口函数的哈希值;
比较通过所述各种哈希算法得到的哈希值之间,所存在的哈希冲突的数量;
确定当哈希冲突的数量最小时,所应用的哈希算法为所述目标Java类的哈希算法。
5.根据权利要求4所述的方法,其特征在于,还包括:
将所述目标Java类的哈希算法的算法索引存储至所述目标Java类的元数据信息中。
6.一种函数指针查询方法,其特征在于,包括:
基于目标Java类的元数据信息,获取所述目标Java类的哈希表的大小;
基于所述目标Java类待实现的接口函数的函数签名,计算所述接口函数的哈希值;
基于所述哈希表的大小和所述接口函数的哈希值,确定所述接口函数的函数指针对应所述哈希表的索引;
当所述索引指示的位置存储有函数指针时,确定所述索引指示的位置存储的所述函数指针为所述接口函数的函数指针;
当所述索引指示的位置未存储函数指针时,基于所述接口函数的函数签名查询冲突消除表,通过查询结果确定所述接口函数的函数指针。
7.根据权利要求6所述的方法,其特征在于,所述基于所述目标Java类待实现的接口函数的函数签名,计算所述接口函数的哈希值,包括:
查询所述目标Java类的元数据信息中包括的算法索引;
基于所述算法索引对应的哈希算法和所述目标Java类待实现的接口函数的函数签名,计算所述接口函数的哈希值。
8.根据权利要求6或7所述的方法,其特征在于,其特征在于,所述基于所述哈希表的大小和所述接口函数的哈希值,确定所述接口函数的函数指针对应所述哈希表的索引,包括:
对所述接口函数的哈希值与所述哈希表的大小进行取余操作;
确定通过取余操作获取的余数为所述接口函数的函数指针对应所述哈希表的索引。
9.一种终端装置,其特征在于,包括:
处理器;
所述处理器用于,基于目标Java类可实现的各个接口函数的数量,生成所述目标Java类的哈希表,所述哈希表的大小为所述接口函数的数量与预设系数的乘积,确定所述目标Java类的哈希算法,基于所述目标Java类的哈希算法和所述各个接口函数的函数签名,确定...
【专利技术属性】
技术研发人员:张超,蒋奕,张必红,陈永健,包斌,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。