[发明专利]访问类的静态成员的方法和装置有效
申请号: | 201811194933.3 | 申请日: | 2018-10-15 |
公开(公告)号: | CN111045658B | 公开(公告)日: | 2021-10-01 |
发明(设计)人: | 杨勇勇;何忠政;张斌;程帅 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41 |
代理公司: | 北京龙双利达知识产权代理有限公司 11329 | 代理人: | 陈洪艳;王君 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 访问 静态 成员 方法 装置 | ||
本申请提供访问类的静态成员的方法和装置。该方法和装置中,获取类的元数据,元数据中包括第一变量,在类初始化之前,第一变量中记录不可访问的第一地址,在类初始化之后,第一变量中记录类的静态域的第二地址;根据第一变量中记录的第一地址或第二地址,确定该类的静态域中的待访问成员的目标地址;最后访问该目标地址,以访问该待访问成员。其中,若该类已经初始化过,则可以成功访问其静态成员,而不需要进行初始化状态检测或判断等流程;若该类还未初始化,因为第一变量中的第一地址不可访问,所以可以保证不会访问错的静态成员值。本申请的技术方案可以使得运行时系统使用较少的时间开销和空间开销来访问类的静态成员和提高访问的正确性。
技术领域
本申请涉及程序设计语言领域,并且更具体地,涉及访问类的静态成员的方法和装置。
背景技术
类在访问前必须初始化。类的初始化就是执行类构造器。类的初始化可以实现对类中的静态变量的赋值,并执行类中的静态代码块中的语句。
在访问类时,如果类没有被初始化,则需要执行类的初始化操作;如果类已经被初始化,则可以直接访问类的静态成员,例如类的静态方法或静态变量。访问类也可以理解为访问类的静态成员。
目前,一种访问类的方法包括:给类设置一个标识类的初始化状态的标记,在访问类之前,获取该标记的值,将该标记的值与未初始化状态标记的值进行比较,然后根据比较结果判断类是否已经初始化。其中,若该标记的值与未初始化状态标记的值不相同,说明该类可能已经初始化,可以访问该类的静态成员。
这种访问类的方法使得类的运行时系统的时间开销和空间开间都比较大。那如何使用运行时系统中较少的时间开销和空间开销来访问类是一种亟待解决的技术问题。
发明内容
本申请提供一种访问类的静态成员的方法和装置,可以使用运行时系统中较少的时间开销和空间开销来访问类的静态成员,以及提高类的访问正确性。
第一方面,本申请提供了一种访问类的静态成员的方法,该包括:获取类的元数据,所述元数据中包括第一变量,在所述类初始化之前,所述第一变量中记录不可访问的第一地址,在所述类初始化之后,所述第一变量中记录所述类的静态域的第二地址;根据第一变量中记录的第一地址或第二地址,确定该类的静态域中的待访问成员的目标地址;访问该目标地址,以访问该待访问成员。
该方法中,直接根据类的元数据中的第一变量中记录的地址来确定类的静态域中的待访问成员的目标地址,然后访问该目标地址以访问该待访问成员。
本申请的方法中,在类已初始化的情况下,不需要比较指令和进行比较操作,就可以直接访问已经初始化过的类的静态成员,从而可以减少类的运行时系统中访问类的静态成员所需的时间开销和空间开销。
此外,该类还未初始化时,因为第一变量中的第一地址不可访问,所以可以保证不会访问错的静态成员值,从而可以提高访问的正确性。
结合第一方面,在第一种可能的实现方式中,该方法还包括:在SIGSEGV异常信号的触发下执行异常处理,其中,该异常处理包括:调用该类的构造方法对该类进行初始化,并将该类的静态域的第二地址记录到该类的元数据的第一变量中。
该实现方式中,通过内存访问异常产生SIGSEGV异常信号,并在SIGSEGV异常信号的触发下进行类的初始化,以便于可以访问该类的静态成员。其中,不需要进行比较操作就可以触发类的初始化,即不需要比较指令就可以在类处于非初始化状态时对类进行初始化。
由于产生内存访问异常,内存访问异常触发生成SIGSEGV异常信号和通过SIGSEGV异常信号触发类的初始化是由为类的运行时系统提供支持的操作系统执行的,以及SIGSEGV异常信号触发类的初始化后,将类的静态域的第二地址直接写入第一变量中而不需要额外的存储空间来完成类的初始化,因此,该实现方式可以使用类的运行时系统中的较少的空间开销和时间开销来访问类的静态成员。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811194933.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种计算装置及相关产品
- 下一篇:基于增强现实的人机交互方法及系统