当前位置: 首页 > 专利查询>微软公司专利>正文

动态运行时间环境中使用标签化类型的系统和方法技术方案

技术编号:2921327 阅读:198 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及促进在受管理的代码环境中动态编程语言执行的系统和方法。提供了类组件,它宣称一个继承层次,用于一个或多个关联于动态编程语言的标签化值。在标签化值的执行期间,规则组件减轻了从标签化值继承或导出属性的用户定义类型,以便支持类型安全运行时间环境。提供了分叉的类树,它在树的一边定义了非标签化类型元素,而标签化类型元素值定义在树的另一分支上。规则组件分析运行时间扩展,所述扩展帮助防止来自树的一个组件的数据从树的另一组件导出或继承属性。运行时间扩展包括这样的方面,如强制转换类扩展、测试类扩展、和用于将数据类型从一个类子类型转换成另一个的类子类型的转换类扩展。

【技术实现步骤摘要】

本专利技术通常涉及计算机系统,更具体地,涉及在动态运行时间中促进动态语言的运算和执行的系统和方法。
技术介绍
随着计算机科学发展,面向对象编程已成为普通设计者和程序员利用来实现计算机系统内功能的众多常见的模型之一。对象模型通常由类结构定义,类结构包括提供属于该类的方法和关联的数据元素两者的类成员。类成员因而提供/定义计算机程序内所希望的功能,其中对象被声明为特定类的实例。如很普通的,对象常常必须交换数据和/或调用在同一平台上的运行的其它对象和/或与属于远程平台的对象通信。为了在对象间通信,已开发了接口系统和标准来定义对象如何彼此通信和/或交互。在对象间通信和接口的常见系统称为组件对象模型(COM),其中另一个类似的系统称为公共对象代理体系结构(Common Object Request BrokersArchitecture)(CORBA)。还有另一个通信接口可用语言定义的,例如诸如在Java虚拟机的操作框架内的JAVA语言。虽然由于已开发了这些和其它系统,但是,两个公共对象结构或模型通常已经被合并起来,并且通常可按照例如受管理的和非受管理的对象系统来定义。受管理的对象可从受管理的软件环境内的堆分配,并且通常不负责管理相关的对象生存期。受管理的对象可按照数据类型(例如,元数据)来描述,并自动由受管理的环境“无用单元收集器”收集(例如,收回),它在对象不再被访问时将对象从内存中移去。相反,非受管理的对象可从标准的操作系统堆分配,其中当对象引用不再存在时,对象本身负责释放它使用的内存。这可通过众所周知的技术例如诸如引用计数来实现。如上所述,受管理的对象可从受管理的堆分配并自动地被作为无用单元收集。为了达到这一点,跟踪对受管理的对象的引用。当对对象的最后一个引用被删除时,无用单元收集器回收由对象占用的内存,减少对受管理的对象引用计数的需求。这样,受管理的环境基本上内部地处理引用计数。在受管理的代码内跟踪是可能的,因为受管理的环境记录了存在于对象上的未完结的引用。由于每个新对象引用要在受管理的代码中声明,受管理的环境添加该引用至有效引用的列表中。在任意给定时间,受管理的环境,而不是对象本身,因而知道存在于给定对象上的有效引用。在引用超出范围或改变了值的时候,更新有效引用列表,而且只要引用保留在受管理的代码内,受管理的环境就能跟踪它。连同上述对象生存期问题,受管理的和非受管理的对象系统通常还在许多其它重要方式上有所不同。这些不同可包括,例如,对象系统如何在各自的对象系统中提供对象接口,如何结构化和/或定义数据,以及如何处理错误和异常。涉及对象执行环境,动态编程语言提供了各种各样的不同代码类型,由此开发多个应用。动态类型化语言,诸如Perl、Scheme、Ruby、Python、Smalltalk等等,一般利用各种标签方案来克服在堆上分配小的(通常是字大小的)对象的开销,但仍保持了用于参数运算的值的统一表示法的好处。例如,假设指针对齐于4字节边界,通用技术是用32位值的最低有效位来区别指针和立即值。例如在基于Windows的系统上,可能考虑设置两个最高有效位为1,因为假设指针不指向最高内存段。然而对许多系统设计者是显然的,即使用这样的编码(例如,用以区别指针和整数值的编码)的程序,当在受管理的执行环境诸如通用语言运行时间(Common Language Runtime)或Java虚拟机上执行时是不可检验的。目前,一个实现统一表示法的可检验的方式是利用封装(boxing)(例如,封装将整数与对象关联起来),但是,对被封装的值的运算可能比直接在原值上运算相对于处理器执行性能要慢一个数量级。概述为了提供本专利技术一些方面的基本理解,以下介绍本专利技术的简要概述。这个概述不是本专利技术详尽的概观。不是想要确定本专利技术的关键/重要的要素或描绘本专利技术的范围。它的唯一作用是以简单的形式作为稍后提供的更为详细描述的序言来介绍本专利技术的一些概念。本专利技术涉及在受管理的对象环境中处理从动态编程语言生成的标签化类型值的系统和方法。标签化类型值包括数据的特殊编码部分,例如诸如32位值的最低有效位使执行引擎能够区别指针和立即数据值。本专利技术定义一个抽象根类型类用于动态编程语言,所述动态编程语言可在诸如由虚拟机提供的受管理的对象环境中执行。这种类型的类被定义为,在类层次中具有一个顶部分,顶部分表示不透明的、自然的大小值,用于在类的顶部分之下定义的数据元素。在一种情况下,在类的顶部分或根下面展开二叉树,其中在树的一边展开系统对象层次体系(例如非标签化的元素),而在树的另一边表示标签化值的密封的类型。然后将各种规则应用于抽象根类型类,来促进使用标签化类型的动态编程语言的正确执行(例如,密封或防止由用户定义类型对标签化类型的数据访问)。更具体地,执行规则减少关联于用户定义类型的值或数据从抽象类的标签化成员导出或者继承属性。以这种方式,标签化类型值可以在类型安全执行环境中执行。而且,通过定义抽象类以及限制对类成员的访问,增强了代码执行性能,超过了使用标签化值的常规算法诸如如上所述的封装协议的执行性能。依照本专利技术的一个方面,定义了标签化类型的元素和顶类型的元素,其中顶定义了树的最上面成员,所述树在树的一个分支具有标签化的数据子类型,以及在树的另一分支中具有与非标签化成员有关的数据子类型。随后扩展元数据规则来帮助保证非标签化分支的成员不从标签化子类型或顶类型的元素导出或继承属性。还可扩展规则来支持这样的运算,如将算术的或其它类型的运算应用于标签化值。可在堆栈执行过程中应用规则,并且规则包括这样的运算,如将对象强制转换为顶元素类型和/或标签化类型。这还可以包括测试运算,来确定一个值是否是相应类或子类型的成员。其它执行规则包括将数据的一种类型(例如,整数)转换成标签化类型,以及反之亦然。通过定义同时包含标签化和非标签化值的抽象类,以及提供规则来隔离类的子类型之间的继承,本专利技术提供快速而安全的环境用于执行动态编程语言。为实现前述的和有关的目标,在此结合以下描述和附图描述本专利技术某些说明性方面。这些方面表示可实施本专利技术的各种不同方式,所有这些方式都是要由本专利技术覆盖的。本专利技术的其它优点和新颖特征,在结合附图考虑时可从本专利技术的以下详述中变得显而易见。附图说明图1是示意性方框图,示出依照本专利技术一个方面的标签化类型处理系统。图2是一方框图,示出依照本专利技术一个方面的标签化类型层次结构。图3是一流程图,示出依照本专利技术一个方面的标签化类型处理。图4是一流程图,示出依照本专利技术一个方面的标签化类型指令执行。图5示出依照本专利技术一个方面的执行规则。图6是一流程图,示出依照本专利技术一个方面的强制转换类规则。图7是一流程图,示出依照本专利技术一个方面的测试类规则。图8是一流程图,示出依照本专利技术一个方面的从整数到标签化类型的转换规则。图9是一流程图,示出依照本专利技术一个方面的从标签化类型到整数的转换规则。图10是示意性方框图,示出依照本专利技术一个方面的适当的操作环境。图11是本专利技术可交互的一个样本计算环境的示意性方框图。详细说明本专利技术涉及在受管理的代码环境中促进动态编程语言执行的系统和方法。提供类组件,它声明用于一个或多个关联于动态编程语言的标签化值的继承层次结构。在标签化值的执行过程中,规则组件减少本文档来自技高网...

【技术保护点】
一系统,促进在受管理的对象环境中动态代码的执行,包括:一个类组件,宣称一继承层次结构,用于一个或多个与动态编程语言相关联的标签化值;以及一个规则组件,它减轻了来自继承标签化值中用户定义的类型。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:E梅叶尔
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

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

1