[发明专利]变量句柄有效
| 申请号: | 201580038162.7 | 申请日: | 2015-07-13 |
| 公开(公告)号: | CN106663024B | 公开(公告)日: | 2020-05-19 |
| 发明(设计)人: | P·山德士;B·戈茨;J·R·罗斯 | 申请(专利权)人: | 甲骨文国际公司 |
| 主分类号: | G06F9/455 | 分类号: | G06F9/455 |
| 代理公司: | 中国国际贸易促进委员会专利商标事务所 11038 | 代理人: | 李晓芳 |
| 地址: | 美国加*** | 国省代码: | 暂无信息 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 变量 句柄 | ||
1.一种用于访问存储器位置的方法,包括:
识别创建变量句柄实例的第一指令,所述第一指令包括识别接收者的类型以及由所述接收者保持的所述变量句柄实例被配置为提供对其的访问的变量的声明信息,其中所述接收者是被用来保持所述变量的结构;
响应于所述第一指令,并且基于所述声明信息,执行一个或多个检查以确定对所述变量的访问是否是许可的,其中所述一个或多个检查通过至少确定发出所述第一指令的作用类具有访问所述变量的适当特权来执行;
响应于确定所述作用类具有访问所述变量的适当特权,创建变量句柄实例,所述变量句柄实例包括被配置为对所述变量的存储器位置执行受约束操作的一个或多个受约束函数,其中所述一个或多个受约束函数包括以下项中的一个或多个:一个或多个受防护操作或者一个或多个原子操作;
识别指定对所述变量句柄实例的所述一个或多个受约束函数中的特定受约束函数的调用的第二指令,其中所述第二指令指示所述接收者;以及
识别存储所述变量的特定存储器位置并且使所述特定受约束函数相对于所述特定存储器位置被执行。
2.如权利要求1所述的方法,其中所述接收者是类并且所述变量是由所述类保持的静态字段、所述接收者是类实例并且变量是由所述类实例保持的字段、接收者是数组并且变量是所述数组的元素、或者所述接收者是对表示所述变量的堆外或直接存储器位置的引用。
3.如权利要求1-2中的任何一项权利要求所述的方法,其中所述第一指令调用查找函数,所述查找函数使所述变量句柄实例存储所述变量在所述接收者内的偏移,以及将所述变量句柄实例的所述一个或多个受约束函数绑定到识别所述接收者的类型和所述变量的类型的一个或多个描述符。
4.如权利要求1-2中的任何一项权利要求所述的方法,其中所述方法由管理第一存储器区域的虚拟机执行,并且所述变量的实例被存储在由所述虚拟机管理的第一存储器区域外部的第二存储器区域中。
5.如权利要求1-2中的任何一项权利要求所述的方法,还包括:
识别指定对所述变量句柄实例的所述一个或多个受约束函数中的第二特定受约束函数的第二调用的第三指令,所述第三指令指定共享所述接收者的类型的第二接收者;以及
识别其中所述变量由所述第二接收者保持的第二特定存储器位置,并且使得所述第二特定受约束函数相对于所述第二特定存储器位置被执行。
6.如权利要求1-2中的任何一项权利要求所述的方法,其中所述方法由虚拟机执行,并且虚拟机通过生成由所述虚拟机正在其上执行的硬件支持的机器代码指令来执行所述受约束操作。
7.如权利要求1-2中的任何一项权利要求所述的方法,其中所述受约束操作执行以下操作中的一个或多个:放宽的操作、易失性操作、懒惰的操作、比较和设置操作或者获得和设置操作。
8.如权利要求1-2中的任何一项权利要求所述的方法,其中第二指令包括用于所述特定受约束函数的一个或多个参数,以及所述一个或多个参数包括以下各项中的一个或多个:所述变量的实例所位于的到所述接收者的实例的数组索引或者存储到所述变量的实例的所述特定存储器位置的值。
9.如权利要求1-2中的任何一项权利要求所述的方法,还包括:执行检查,以确保由所述第二指令指定的所述接收者的实例与由所述声明信息识别的所述接收者的类型匹配。
10.如权利要求1-2中的任何一项权利要求所述的方法,其中使所述特定受约束函数相对于所述特定存储器位置被执行包括经由一条或多条硬件指令调用与任意存储器位置交互的函数。
11.如权利要求1-2中的任何一项权利要求所述的方法,其中所述变量句柄实例的所述一个或多个受约束函数包括对应于一个或多个原子算术运算的函数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于甲骨文国际公司,未经甲骨文国际公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201580038162.7/1.html,转载请声明来源钻瓜专利网。





