变量句柄制造技术

技术编号:25308138 阅读:55 留言:0更新日期:2020-08-18 22:27
本申请涉及变量句柄。根据一种技术,虚拟机识别创建变量句柄实例的第一指令,该第一指令包括识别接收者的类型以及接收者保持的由该变量句柄实例被配置为提供对其的访问的变量的声明信息。如果对变量的访问是允许的,则虚拟机创建变量句柄实例,该变量句柄实例包括被配置为对变量的存储器位置执行受约束操作的受约束函数。虚拟机识别指定对特定受约束的调用的第二指令,其中第二指令指定接收者或者被隐式绑定到接收者。虚拟机识别存储变量的实例的特定存储器位置并且相对于该特定存储器位置执行特定受约束函数。

【技术实现步骤摘要】
变量句柄本申请是申请日为2015年7月13日、申请号为201580038162.7、名称为“变量句柄”的专利技术专利申请的分案申请。
实施例一般涉及用于在编程语言内支持和/或利用改进的存储器访问的技术。
技术介绍
在多处理器系统中,处理器常常具有一个或多个存储器高速缓存层,该一个或多个存储器高速缓存层通过加速对数据的访问和减少共享存储器总线上的业务二者来提高性能。然而,虽然存储器高速缓存可以大大提高性能,但是它们也提出了新的挑战。例如,检查同一存储器位置的两个处理器可能接收到不同的结果,因为一个处理器可能使用陈旧的(stale)高速缓存值,然而另一个处理器可以从主存储器拉取更新的值。此外,许多编译器和计算机架构重写代码,以优化执行。例如,处理器可以重写或重新排序代码,以利用存储在其高速缓存中的当前数据。然而,这些优化中的许多优化仅针对单个处理器/线程正在执行程序的情况确保一致的程序语义。因此,在多处理器/多线程环境中,重新排序可能导致非预期的行为和不一致的程序状态。例如,假如直到指令的原始程序索引才依赖变量,则计算机架构可能在最本文档来自技高网...

【技术保护点】
1.一种方法,包括:/n生成被配置为通过一个或多个存储器防护操作提供对存储器的安全访问的对象;/n通过所述对象,接收指示存储器位置并且指定所述一个或多个存储器防护操作中的要相对于所述存储器位置执行的特定存储器防护操作的调用;/n使得所述特定存储器防护操作相对于所述存储器位置被执行;以及/n其中所述方法由一个或多个处理器执行。/n

【技术特征摘要】
20140714 US 62/024,334;20150407 US 14/681,003;20151.一种方法,包括:
生成被配置为通过一个或多个存储器防护操作提供对存储器的安全访问的对象;
通过所述对象,接收指示存储器位置并且指定所述一个或多个存储器防护操作中的要相对于所述存储器位置执行的特定存储器防护操作的调用;
使得所述特定存储器防护操作相对于所述存储器位置被执行;以及
其中所述方法由一个或多个处理器执行。


2.如权利要求1所述的方法,其中所述对象与定义所述一个或多个存储器防护操作的类相关,但是不包括用于多个不同变量种类中的任何特定变量种类的所述一个或多个存储器防护操作的实现。


3.如权利要求2所述的方法,其中所述多个不同变量种类包括以下各项中的一个或多个:实例字段变量、静态字段变量、数组元素变量或堆外变量。


4.如权利要求2所述的方法,其中所述对象是从所述类扩展并且相对于所述多个不同变量种类中的特定变量种类实现所述一个或多个存储器防护操作的子类的实例。


5.如权利要求2所述的方法,还包括:
生成作为所述类的实例的第二对象;
通过所述第二对象,接收指示第二存储器位置并且指定所述一个或多个存储器防护操作中的要相对于第二存储器位置执行的第二特定存储器防护操作的第二调用,其中存储器中的所述存储器位置表示第一变量类型并且第二存储器位置表示第二变量类型,其中第一变量类型不同于第二变量类型;以及
使得所述特定存储器防护操作相对于第二存储器位置被执行。


6.如权利要求5所述的方法,其中第一变量类型和第二变量类型是以下各项中的一个或多个:整型、长整型、浮点型、双精度型或对象引用。


7.如权利要求1所述的方法,其中生成所述对象将所述对象绑定到第一变量类型,其中所述调用指定访问所述存储器位置以基于第二变量类型执行所述特定存储器防护操作,并且所述方法还包括:
确定第一变量类型是否与第二变量类型匹配,其中响应于确定第一变量类型与第二变量类型匹配,使得所述特定存储器防护操作相对于所述存储器位置被执行;
响应于确定第一变量类型不匹配第二变量类型,执行以下操作中的一个或多个:生成错误,或者使第一变量类型符合第二变量类型然后使得所述特定存储器防护操作相对于所述存储器位置被执行。


8.如权利要求1所述的方法,其中生成所述对象包括执行检查以确定对所述位置的访问是否是许可的,并且所述方法还包括通过所述对象接收多个调用以在不用重复所述检查的情况下执行存储器防护操作。


9.如权利要求1所述的方法,其中所述特定存储器防护操作通过除了向所述存储器位置发出一条或多条加载或存储指令之外还向所述存储器位置至少发出由所述一个或多个处理器本机支持的一条或多条存储器屏障指令来执行。


10.如权利要求9所述的方法,其中所述特定存储器防护操作通过组合由所述一个或多个处理器本机支持的所述一条或多条存储器屏障指令中的两条或更多条存储器屏障指令来执行。


11.如权利要求1所述的方法,还包括:
通过所述对象接收第二调用,所述第二调用指定要相对于所述存储器位置执行的、不同于所述特定存储器防护操作的第二存储器防护操作;以及
使得第二存储器防护操作相对于所述存储器位置被执行。


12.如权利要求1所述的方法,其中使得所述特定存储器防护操作被执行涉及启用与执行一个或多个安全检查的对象相关联的代码,所述一个或多个安全检查包括以下各项中的一个或多个:确定传递到所述调用中的一个或多个参数匹配所述对象预期的一组参数、确定对传递到所述调用中的存储器位置的引用是否为空、或者确定传递到所述调用中的数组索引是否有效。


13.如权利要求1所述的方法,其中所述存储器防护操作包括用于一个或多个访问模式的操作,所述一个或多个访问模式包括以下各项中的一个或多个:放宽的读取、放宽的写入、易失性读取、易失性写入、原子读取、原子写入或原子更新。


14.一种存储一个或多个指令的非暂态计算机可读存储介质,所述一个或多个指令当由一个...

【专利技术属性】
技术研发人员:P·山德士B·戈茨J·R·罗斯
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1