[发明专利]动态类型化的编程语言中的属性访问有效
申请号: | 201480069909.0 | 申请日: | 2014-12-05 |
公开(公告)号: | CN105830025B | 公开(公告)日: | 2019-05-07 |
发明(设计)人: | J·("A")·米亚多维茨;P·A·莱瑟斯;L·拉弗里尼尔;B·G·阿比集思沙特拉;C·C-C·曼 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F9/4401;G06F8/41;G06F9/455 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 胡利鸣 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 代码生成器可发出用于在在动态类型化的编程语言中促进类型安全性的情况下访问对象的属性的直接访问代码。直接访问代码使用被硬编码到对象的存储器区域内的偏移来访问属性的值。在一些情况下,直接访问代码在防护包括至少一个在先序列成员在内的属性访问序列的单个类型检查后访问该值。在一些情况下,类型检查代码将对象的类型与等同类型高速缓存的指定的防护类型进行比较。可通过使用与等同类型高速缓存相关联的属性等同性记录来检查对象类型与等同类型高速缓存中的类型的因属性而异的访问等同性。当类型关于一属性不是访问等同的时,通过发出用于访问该属性的非直接访问代码来保持类型安全性。 | ||
搜索关键词: | 动态 类型 编程 语言 中的 属性 访问 | ||
【主权项】:
1.一种用于生成并执行针对在动态类型化的编程语言中的属性访问的机器代码的系统,所述系统包括:至少一个处理器;与所述处理器能操作上通信的存储器;以及以下中的至少一个:(a)直接访问代码生成器,所述直接访问代码生成器发出针对属性访问的直接访问代码以访问对象的属性,所述对象具有一类型,所述直接访问代码在以下条件被满足时被发出:在对应于所述属性访问的多形态内联高速缓存中标识的类型是等同的,以及从所述多形态内联高速缓存中检索的类型集与编译器值表中的所述对象的类型相关联的类型集相匹配;(b)针对属性访问的用于访问对象的属性的所生成的直接访问代码,所述属性访问属于属性访问序列,所述对象具有一类型和存储器区域,并且其中所述直接访问代码在执行之际访问被定位在所述对象的存储器区域中被硬编码的偏移处的所述属性的值,并访问所述值,而在比较类型检查确定所述对象的类型匹配于与所述属性访问序列相关联的等同类型高速缓存中的条目之后无需要求进一步的类型检查;或(c)属性等同性记录,所述属性等同性记录针对被单个类型检查所防护的属性访问序列中的每个属性访问具有一个条目。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201480069909.0/,转载请声明来源钻瓜专利网。