[go: up one dir, main page]

CN1573688A - 动态运行时间环境中使用标签化类型的系统和方法 - Google Patents

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

Info

Publication number
CN1573688A
CN1573688A CNA2004100489029A CN200410048902A CN1573688A CN 1573688 A CN1573688 A CN 1573688A CN A2004100489029 A CNA2004100489029 A CN A2004100489029A CN 200410048902 A CN200410048902 A CN 200410048902A CN 1573688 A CN1573688 A CN 1573688A
Authority
CN
China
Prior art keywords
class
type
value
integer
labelled
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2004100489029A
Other languages
English (en)
Other versions
CN100507837C (zh
Inventor
E·梅叶尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1573688A publication Critical patent/CN1573688A/zh
Application granted granted Critical
Publication of CN100507837C publication Critical patent/CN100507837C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4492Inheritance

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

动态运行时间环境中使用标签化类型的系统和方法
技术领域
本发明通常涉及计算机系统,更具体地,涉及在动态运行时间中促进动态语言的运算和执行的系统和方法。
背景技术
随着计算机科学发展,面向对象编程已成为普通设计者和程序员利用来实现计算机系统内功能的众多常见的模型之一。对象模型通常由类结构定义,类结构包括提供属于该类的方法和关联的数据元素两者的类成员。类成员因而提供/定义计算机程序内所希望的功能,其中对象被声明为特定类的实例。如很普通的,对象常常必须交换数据和/或调用在同一平台上的运行的其它对象和/或与属于远程平台的对象通信。为了在对象间通信,已开发了接口系统和标准来定义对象如何彼此通信和/或交互。
在对象间通信和接口的常见系统称为组件对象模型(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是本发明可交互的一个样本计算环境的示意性方框图。
详细说明
本发明涉及在受管理的代码环境中促进动态编程语言执行的系统和方法。提供类组件,它声明用于一个或多个关联于动态编程语言的标签化值的继承层次结构。在标签化值的执行过程中,规则组件减少了用户定义类型从标签化值继承或导出属性,以便支持类型安全运行时间环境。提供分叉的类树,定义非标签化类型元素在树的一边,而标签化类型元素值在树的另一分支上。规则组件分析运行时间扩展,所述运行时间扩展帮助防止来自树的一个组件的数据从树的另一组件导出或继承属性。运行时间扩展包括这样的方面,如强制转换类扩展,测试类扩展,以及转换类扩展,用于将数据类型从一个类的子类型转换成另一个类的子类型(例如,将标签化元素转换成非标签化元素,以及反之亦然)。
如本申请中所用到的,术语“组件(component)”、“类(class)”、“层次结构(hierarchy)”、“系统(system)”等等都是指与计算机有关的实体,或者硬件、硬件和软件的结合、软件,或者执行中的软件。例如,组件可以是,但不限于,运行于处理器上的过程、处理器、对象、可执行的(excutable)、执行的线程、程序和/或计算机。作为说明,运行于服务器上的应用和服务器两者都可以是组件。一个或多个组件可驻留在过程和/或执行的线程内,且组件可局部化在一台计算机上和/或分布于两台或多台计算机之间。
先参考图1,系统100示出了依照本发明一个方面的标签化类型处理。一个或多个动态语言110被供给编译器120(例如,运行时编译执行的编译器(JustinTime compiler)),生成可由虚拟机130执行的中间语言指令124。动态语言110实质上包括任何类型的计算机语言,诸如Perl、Scheme、Ruby、Python和Smalltalk,例如,它们可由编译器120编译并由虚拟机130执行。这样的机器可包括例如,虚拟执行系统(Virtual Execution System)(VES)、通用语言运行时间(Common Language Runtime)(CLR)或Java虚拟机。当执行中间语言代码时,虚拟机130在单个或多个计算机系统(可以是本地和/或远程网络化系统)上运行一个或多个计算机应用134。在本发明的一个方面,动态语言110宣称并生成一个或多个标签化类型140,它们在虚拟机130上被编译并且随后被执行。标签化类型140表示将指针值与其它值诸如立即数据值区别开来的编码,并且常常由动态语言110使用。
标签化类型140在分叉的类结构中说明,所述分叉的类在类结构的一边或根具有标签化值,以及在另一边或根具有非标签化的或用户定义类型的值,由此这种类型的类结构将在下面参考图2更详细地描述。为了处理中间指令124和标签化类型140,虚拟机130和/或编译器120使用一组确认规则150,来帮助确保用户定义的数据类型不从标签化数据类型导出或继承。同样,各种堆栈执行规则160(下面描述)由堆栈异常处理修改并执行,以便处理标签化和非标签化值。通过提供新类的类型框架、确认规则150和/或堆栈异常处理程序160,本发明改善了虚拟机130的执行性能。这是通过依照代替和/或减少诸如将标签化值视为“封装的”变量这样的技术的类框架和规则处理标签化值来实现的。这些变量在这样的标准中描述,如定义通用语言基础结构(Common LanguageInfrastructure)(CLI)的“ECMA标准”。
通常,系统100遵守ECMA标准和通用语言基础结构(CLI),其中以多种高级语言编写的应用可在不同的系统环境中执行,而不需要重写应用以考虑这些环境的独特性。要理解,也可以依照本发明适应处理动态语言和/或虚拟执行环境的其它标准。ECMA标准包括几个可在因特网上容易地得到的部分,以便通过在它们各自部分中描述那些组件来促进理解各种组件。这些部分是:
部分I:体系结构
部分II:元数据定义和语义
部分III:CIL指令集
部分IV:简档和库
部分V:附录
通用语言基础结构(CLI)为可执行代码和它运行于其中的执行环境(虚拟执行系统(Virtual Execution System),或VES)提供了规范。可执行代码作为模块提供给VES。模块一般是单个文件,以规定的格式包含可执行内容。通常,在通用语言基础结构(CLI)的中心是一个单类型系统,即编译器、工具和CLI本身所共享的通用类型系统(Common Type System)(CTS)。正是这样一个模型,定义CLI在宣称、使用和管理类型时所遵循的规则。CTS建立一个框架,它允许交叉语言集成、类型安全,以及高性能代码执行。CLI包括下列基本组件:
通用类型系统。通用类型系统(CTS)提供一个丰富类型系统(rich typesystem),支持在许多编程语言中存在的类型和操作。通用类型系统想要支持宽广范围的编程语言的完全实现。
元数据。CLI使用元数据来描述和引用由通用类型系统定义的类型。以独立于任何特定编程语言的方式存储(“存留(persist)”)元数据。因而,元数据提供通用交换机制,在操纵程序的工具(编译器、调试器等)之间以及在这些工具和虚拟执行系统之间使用所述机制。
通用语言规范。通用语言规范是语言设计者和框架(类库)设计者之间的协议。它规定了CTS类型系统的子集和一组使用约定。语言通过实现至少是CLS部分的CTS的那些部分来为它们的用户提供访问框架的最大能力。同样地,将最广泛地使用框架,如果它们公开暴露的方面(类、接口、方法、字段等)使用是CLS的部分的类型并且遵守CLS约定。
虚拟执行系统。虚拟执行系统实现并实施CTS模型。VES负责加载和运行为CLI编写的程序。它提供执行受管理的代码和数据所需要的服务,使用元数据在运行时间将分别生成的模块连接在一起(后绑定)。
合起来,CLI的这些方面为设计、开发、部署和执行分布式组件和应用形成统一的框架。可从各种以CLI为目标的编程语言得到通用类型系统的适当的子集。基于语言的工具彼此通信,并且与使用元数据来定义和引用用来构造应用的类型的虚拟执行系统通信。虚拟执行系统使用元数据按需创建类型的实例,并为基础结构的其它部分提供数据类型信息(诸如远程服务、组装件(assembly)下载、安全等)。
现在转向图2,图200示出依照本发明一个方面的标签化类型层次结构。为了以类型安全方式支持标签化值,本发明为继承层次结构提供一种新的(抽象)根类型,标注为顶(Top)210,代表不透明的、自然的大小值。在这个新的根210下面,在一边宣称现有的System.Object层次220,而在另一边是(密封的)标签化(Tagged)类型230。顶类型210通常相应于如在ECMA部分III中提供的对象引用类型0的概念。主题发明提供O到第一类类型中,并添加新的标签化子类型230。在240,提供一个或多个元数据确认规则,它们禁止对定义为顶210和标签化类型230的元素的继承。这些规则在下面更详细地描述。同样,要意识到,尽管两个分支都绘于顶210之下,但也同样可提供其它分支(例如,在System.0bj和标签化类型旁边或下面定义的多个分支)。
在ECMA部分III中定义的对象引用(类型0)通常被认为是完全不透明的。一般没有算术指令允许对象引用作为操作数,尽管本发明为标签化类型提供算术运算,如下所述。所允许的比较运算是对象引用之间的相等(和不相等),在本发明提供测试类指令的情况下。在ECMA部分III中没有在对象引用上定义的转换运算,但是本发明提供标签化和非标签化值之间的转换。对象引用一般由某些CIL对象指令(例如,newobj和newarr)创建。例如,这些引用也能作为参量传递、作为局部变量存储、作为值返回,并可存储在数组中并作为对象字段。
本发明还为通用运行时间语言(CLR)提供明确的支持,它实际上促进使用CLR作为真正的多语言运行时间。本发明的一个特定方面提供了附加的扩展(例如,算术运算、确认规则)来同样支持动态语言(例如开放源应用)。本发明通过使用代表不透明的、自然大小值的、具有继承层次结构的抽象根类型(例如顶),以类型安全方式支持标签化值。本发明减少了与使用各种标签方案来克服在堆上分配小(例如字大小的)对象的开销的需求相关联的常规问题,但仍保持例如用于参数操作的值的统一表示法的好处。
图3-4和6-9示出依照本发明的各种方法。尽管为了简化说明的目的,将方法示出和描述为一系列动作,但要理解和意识到,本发明不受动作的顺序限制,因为依照本发明,某些动作可以以不同顺序和/或与来自在此所示和描述的其它动作进发地发生。例如,那些在本领域中熟练技术人员将理解和意识到,方法可供替换地表示为一系列相关的状态或事件,诸如在状态图中。此外,不要求所有例示的动作来实现依照本发明的方法。
现在参考图3,图300示出依照本发明一个方面的标签化类型处理。在进行310和320之前,注意可作为对ECMA部分II的修改提供这些过程。在310,至少定义两个新元素类型ELEMENT_TYPE_TAGGED和ELEMENT_TYPE_TOP作为层次化类结构的部分用于处理标签化值。在320,元数据确认规则扩展以保证用户定义类型不能从顶或标签化类型元素导出。如上面提到的,CLI使用元数据描述和引用由通用类型系统定义的类型。元数据以独立于特定编程语言的方式存储(“存留”)。这样,元数据提供通用交换机制,在操纵程序的工具(编译器、调试器等)之间以及在这些工具与虚拟执行系统之间使用所述机制。元数据令牌一般描述一个4字节值,例如它指定元数据表中的一行,或者在用户串(UserString)堆中的起始字节偏移。
在进行前,注意可作为对ECMA部分III的修改的部分提供下列内容。在330,通常所有带有.ref后缀的指令变量将在堆栈上加载顶(Top)类型的值,以便处理标签化类型值。在340,在本发明的一个可替换方面中,可以重新定义算术运算以在标签化值上计算。为了达到这一点,可扩展部分III的1.5节中的表(例如,修改操作数以对顶和标签(Tag)类型运算,扩展在算术运算过程中的确认规则)。下表说明来自ECMA部分III中的各种指令,所述指令可以被扩展成对标签化类型值操作。
表1:二进制数字运算
表2:一元数字运算
  算符类型   整数32   整数64   原始整数     F     ×     O
  结果类型   整数32   整数64   原始整数     F     ×     ×
表3:二进制比较或分支运算
Figure A20041004890200121
表4:整数运算
   整数32 整数64 原始整数   F     &   O
   整数32    整数32   × 原始整数   ×     ×   ×
   整数64     × 整数64    ×   ×     ×   ×
  原始整数   原始整数   × 原始整数   ×     ×   ×
     F     ×   ×    ×   ×     ×   ×
     &     ×   ×    ×   ×     ×   ×
     0     ×   ×    ×   ×     ×   ×
表5:移位运算
                      按…移位
  整数32  整数64   原始整数   F   &   O
待移位的   整数32   整数32     ×   整数32   ×   ×   ×
  整数64   整数64     ×   整数64   ×   ×   ×
 原始整数  原始整数     ×   原始整数   ×   ×   ×
    F     ×     ×     ×   ×   ×   ×
    &     ×     ×     ×   ×   ×   ×
    0     ×     ×     ×   ×   ×   ×
表6:溢出算术运算
表7:转换运算
    转换成                      输入(来自估计堆栈)
  整数32   整数64  原始整数      F    &    O
    整数8不带符号的整数8整数16unsigned int16    舍位    舍位    舍位   舍位至零2    X    X
    整数32不带符号的整数32 无运算 舍位 舍位 舍位至零 X X
    整数64 符号扩展 无操作 符号扩展 舍位至零  停止GC跟踪  停止GC跟踪
不带符号的整数64 零扩展 无运算 零扩展 舍位至零  停止GC跟踪  停止GC跟踪
    原始整数 符号扩展 舍位 无运算 舍位至零  停止GC跟踪  停止GC跟踪
原始不带符号的整数   零扩展    舍位   无运算   舍位至零  停止GC跟踪  停止GC跟踪
所有浮点类型  至浮点数  至浮点数  至浮点数   改变精度3    X    X
参考图4,图400示出依照本发明一个方面标签化类型指令执行的例子。尽管下面所述指令涉及到“加法”指令,但要意识到,任何关联于ECMA或其它标准的指令都可类似地被扩展和被应用到标签化类型处理或标签化和非标签化处理的组合。在410,声明类或函数元素。例如,具有加法指令(或其它操作数)的列表函数可编写为:
    List{
     Add(Top x);
在420,可以宣称标签化和非标签化类型,例如:
List{
     Add(Top x);
     private Top[]values;
     private(int,i);
在430,执行标签化类型操作,例如:
List{
    Add(Top x);
    private Top[]values;
    private(int,i);
      Add(Top x){
        values[i]=x;
        i=i+1;
}
进到440,在标签化类型处理之前、期间和/或之后执行堆栈运算。在450,标签化类型运算或函数结束。这样,在这个例子中,最后的示例列表函数可呈现为:
List{
    Add(Top x);
    private Top[]values;
    private(int,i);
     Add(Top x){
         values[i]=x;
         i=i+1;
     }
}
图5示出依照本发明一个方面的一个或多个执行规则500。在一个方面,强制转换类指令或规则可在520提供。这种类型的指令将对象强制转换到一个类,并且在下面参考图6更详细地描述。在另一个方面中,测试类指令或规则可以在524提供。这种类型的指令在对象上执行测试,以确定一个对象是否是类或接口的实例,并在下面参考图7更详细地描述。在又另一个方面中,将整数转换成对象引用的指令或规则可在530提供。这种类型的指令(例如,标签指令)将整数值转换成对象引用,并在下面参考图8更详细地描述。在又另一方面中,将对象引用转换成整数的指令或规则可在534提供。这种类型的指令(例如,非标签(untag)指令)将对象引用转换成整数值,并在下面参考图9更详细地描述。要意识到,其它指令或规则可同样地定义(例如,算术指令)。
在进行图6-9的讨论之前,提供以下内容来描述这里讲的堆栈概念。
堆栈转移图(Stack Transition Diagram)
堆栈转移图显示在指令执行前后的评估堆栈的状态。下面是一个典型的堆栈转移图。
…,value1,value2->…,result
这个示例图表示堆栈至少必须在其上具有两个元素,并且在定义中最上面的值(“栈顶”或“最近被压入的”)将称为value2(值2)且在下面的值(在value2之前被压入的)将称为value1(值1)。(在象这样的图中,堆栈沿着纸向右增长)。指令从堆栈中移走了这些值,并用另一个值取代它们,在描述中称为result(结果)。
图6是图600,示出依照本发明一个方面的强制转换(cast)类规则。
castclass(强制转换类)一指定对象到类
   格式  汇编格式(assemblyformat)         说明
  74<T>    Castclass类  强制转换对象为一个类
在610,为强制转换类定义堆栈转移如下:
Stack Transition(堆栈转移):
…,obj->…,obj2
在620,将强制转换类定义如下,其中斜体项示出对ECMA部分III的修改:
castclass指令试图强制转换一个对象(例如,顶)为一个类。类是元数据标记(token)(typeref或typedef),表示所希望的类。如果在类的顶上的对象是非标签化的并且T是标签化的,那么发出无效异常。如果在堆栈顶上的对象的类没有实现类(如果类是接口),且不是类的子类(如果类是正规的类),那么发出InvalidCastException(无效强制转换异常)。
注意:
1.数组继承自System.Array
2.如果Foo可以被强制转换为Bar,则Foo[]可被强制转换为Bar[]
3.为了上面的2,将enum(枚举类型)视为它们的基本类型:因而如果E1和E2共享基本类型,E1[]可以强制转换为E2[],
如果obj(对象)为空,castclass完成并返回空。这个行为不同于下面所述的isInst。
在630,将用于强制转换类的异常描述如下:
如果obj不能被强制转换为类,发出InvalidCastException。
如果不能找到类,则发出TypeLoadException(类型加载异常)。这一般在将CIL转换成本地代码时而不在运行时间检测。
在640,描述用于强制转换类的可检验性(Verifiability):
标准的CIL保证类是有效的TypeRef或TypeDef标记,且保证obj为空、对象引用或标签化立即值。
图7是图700,示出依照本发明一个方面的测试类规则。
isinst(是实例)—测试对象是否是类或接口的实例
   格式    汇编格式               说明
   75<T>    Isinst类   测试obj是否是类的实例,返回NULL(空)或那个类或接口的实例
在710,为强制转换类定义堆栈转移如下:
Stack Transition(堆栈转移):
…,obj->…,result
在720,强制转换类如下定义,其中斜体项示出对ECMA部分III的修改:
isinst指令测试obj(type Top)是否是类的实例。类是表示所希望的类的元数据标记(typeref或typedef)。如果在堆栈顶上的对象是未标签化的以及T是标签化的,NULL(空)被压在堆栈上。如果在堆栈顶上的对象的类实现类(如果类是接口)或者类的子类(如果类是正规的类),那么它被强制转换为此类型的类并且结果被压在堆栈上—好象已经调用了castclass。否则,NULL被压在堆栈上。如果obj(对象)是NULL,则isinst返回NULL。
注意:
1.数组从System.Array继承
2.如果可以将Foo强制转换为Bar,那么Foo[]可以被强制转换为Bar[]
3.为了2,将enum视为它们的基本类型:因而如果E1和E2共享基本类型,则E1[]可以强制转换到E2[]
在730,将用于测试类的异常描述如下:
如果不能找到类,则发出TypeLoadException。这—般是在CIL被转换成本地代码时而不是在运行时间检测的。
在740,描述用于测试类的可检验性:
正确的CIL保证类是表示类的有效的typeref或typedef标记,且obj总是或者为空、或者为对象引用。
图8是图800,示出依照本发明一个方面的从整数到标签化类型的转换规则。
tag[.ovf]--将整数转换成对象引用
    格式    汇编格式              说明
  OPCODE_TAG    Tag[.ovf]   将整数i转换成标签化对象引用
在810,为标签类定义堆栈转移如下:
Stack Transition(堆栈转移):
…,i->…,obj
在820,定义tag如下:
tag指令将非标签化值i(原型整数)转换为类型顶(类型O)的实例。这通过在i中设置特殊标签位来完成。
在830,将用于tag的异常描述如下:
如果已经设置值标签位,则发出OverflowException(溢出异常)。
在840,描述用于tag的可检验性:
标准的CIL保证i是native int类型的。
图9是图900,示出依照本发明一个方面的从标签化类型到整数的转换规则。
untag[.ovf]一将对象引用转换成整数
     格式   汇编格式             说明
  OPCODE_UNTAG*    UnTag  将标签化对象引用转换成整数i
*注:操作码OPCODE_TAG和OPCODE_UNTAG将从可用CLI操作码范围中分配(见ECMA部分III,1.2.1节)。
在910,为untag(非标签)类定义堆栈转移如下:
Stack Transition(堆栈转移):
…,obj->…,i
在920,定义untag如下:
untag指令将标签化对象引用转换成原型整数。这是通过清除在obj中的特殊标签位来完成的。
在930,描述用于untag的异常如下:
如果obj不是标签化值,则发出InvalidCastException.
如果obj是空,则发出NullReferenceException(空引用异常)。
在940,描述用于untag的可检测性:
正确的CIL保证obj是对象引用,即,类型Top的对象引用,并且代表标签化整数。
参考图10,用于实现本发明的各种方面的示例性环境1010包括计算机1012。计算机1012包括处理单元1014,系统存储器1016和系统总线1018。系统总线1018连接包括但不限于系统存储器1016的系统组件至处理单元1014。处理单元1014可以是任何各种可用的处理器。双微处理器和其它多处理器结构也可以使用作为处理单元1014。
系统总线1018可以是任何几种类型的总线结构,包括存储器总线或存储控制器,外设总线或外部总线,和/或使用任何各种可用总线结构的局部总线,包括但不限于,11-位总线,工业标准结构(ISA),微通道结构(MSA),扩展ISA(EISA),智能驱动器电子设备(IDE),VESA局部总线(VLB),外围组件互连(PCI),通用串行总线(USB),高级图形端口(AGP),个人计算机存储卡国际协会总线(PCMCIA),以及小型计算机系统接口(SCSI)。
系统存储器1016包括易失性存储器1020和非易失性存储器1022。基本输入/输出系统(BIOS),包含基本例程以在计算机1012内的元件之间传送信息,诸如在启动期间,存储在非易失存储器1022。作为说明,且不是限制,非易失性存储器1022可以包括只读存储器(ROM),可编程ROM(PROM),电可编程ROM(EPROM),电可擦除的ROM(EEPROM),或闪存。易失性存储器1020包括随机存取存储器(RAM),用作外部高速缓存。作为说明且不是限制,RAM可以以许多方式得到,诸如同步RAM(SRAM),动态RAM(DRAM),同步DRAM(SDRAM),两倍数据速率SDRAM(DDR SDRAM),增强型SDRAM(ESDRAM),同步链接DRAM(SLDRAM)以及直接存储器总线(Rambus)RAM(DRRAM)。
计算机1012还包括可移动/不可移动的、易失性/非易失性计算机存储介质。图10示出,例如盘存储器1024。盘存储器1024包括但不限于,象磁盘驱动器、软盘驱动器、带驱动器、Jaz驱动器、另外,盘存储器1024可以单独地包括存储介质或者组合其它存储介质,所述其它存储介质包括但不限于光盘驱动器,诸如紧致盘ROM设备(CD-ROM)、CD可记录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)或者数字通用盘ROM驱动器(DVD-ROM)。为了方便盘存储器设备1024连接至系统总线1018,一般使用可移动或不可移动的接口诸如接口1026。
要意识到,图10描述了用作用户与在适当的操作环境1010中所述的基本计算机资源之间的媒介物的软件。这样的软件包括操作系统1028。可存储在盘存储器1024上的操作系统1028,用于控制和分配计算机系统1012的资源。系统应用1030通过存储在系统存储器1016中或者在盘存储器1024上的程序模块1032和程序数据1034,利用由操作系统1028管理的资源。要意识到,本发明可以由各种操作系统或操作系统的组合来实现。
用户通过输入设备1036将命令或信息输入到计算机1012中。输入设备1036包括但不限于,诸如鼠标之类的指点设备、轨迹球、输入笔、触摸板、键盘、话筒、游戏杆、游戏板、卫星天线、扫描仪、TV调谐器卡、数码照相机、数字摄像机、web照相机等等。这些和其它输入设备通过系统总线1018经由接口端口1038连接至处理单元1014。接口端口1038包括,例如,串行端口、并行端口、游戏端口以及通用串行总线(USB)。输出设备1040使用某些相同类型的端口作为输入设备1036。因而,例如,可使用USB端口提供输入至计算机1012,以及输出来自1012的信息至输出设备1040。提供输出适配器1042以说明存在某些输出设备1040,象监视器、扬声器和打印机,尤其是它们要求特殊的适配器。输出适配器1042包括,作为说明且不是限制,视频和声卡,它们提供输出设备1040与系统总线1018之间连接的装置。应该注意,其它设备和/或设备的系统提供输入和输出性能两者,诸如远程计算机1044。
计算机1012可以在使用逻辑连接至一个或多个远程计算机诸如远程计算机1044的网络化环境中运行。远程计算机1044可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的电器、对等设备或其它公共网络节点等等,以及一般包括许多或全部相对于计算机1012所述的元件。为了简短,只有一个存储器设备1046与远程计算机1044一起示出。远程计算机1044是逻辑地通过网络接口1048并且然后物理地通过通信连接1050连接至计算机1012。网络接口1048包括通信网络,诸如局域网(LAN)和广域网(WAN)。LAN技术包括光纤分布式数据接口(FDDI)、铜分布式数据接口(CDDI)、以太网/IEEE1102.3、令牌环/IEEE 1102.5等等。WAN技术包括但不限于,点对点链接、电路交换网络象综合数字业务网络(ISDN)以及上述的变体、包交换网络和数字订户线路(DSL)。
通信连接1050指用于连接网络接口1048至总线1018的硬件/软件。尽管为了说明清楚在计算机1012内示出通信连接1050,但它也可以在计算机1012之外。用于至网络接口1048的连接所需的硬件/软件包括,仅为示例性目的,内部和外部技术,诸如调制解调器,包括正规电话等级的调制解调器、线缆调制解调器和DSL调制解调器、ISDN适配器和以太网卡。
图11是示例计算环境1100的示意性方框图,本发明可以与所述环境交互。系统1100包括一个或多个客户机1110。客户机1110可以是硬件和/或软件(例如,线程、过程、计算设备)。系统1100还包括一个或多个服务器1130。服务器1130也可以是硬件和/或软件(例如,线程、过程、计算设备)。服务器1130可以容留例如通过使用本发明执行变换的线程。在客户机1110与服务器1130之间一个可能的通信可以是以适合于在两个或多个计算机过程之间传输的数据包形式的。系统1100包括通信框架1150,可以使用它促进客户机1100与服务器1130之间的通信。客户机1100有效地连接至一个或多个客户机数据存储器1160,可以使用它们存储客户机1100的本地信息。同样,服务器1130有效地连接至一个或多个服务器数据存储器1140,可以使用它们存储服务器1130的本地信息。
上面已经描述的内容包括本发明的例子。当然,不可能为了描述本发明,描述每个想得到组件或方法的组合,但一个本领域的普通熟练技术人员可认识到,还有许多本发明的组合和改变是可能的。因此,本发明是想要包括所有落在所附权利要求书的精神和范围内的这样的变更、修改和变体。而且,到在详细说明或权利要求书中都使用术语“包括(include)”的程度,这样的术语旨在以相似于术语“包括(comprising)”的方式包括的,如“包括”在权利要求中作为过渡词使用所解释的。

Claims (27)

1.一系统,促进在受管理的对象环境中动态代码的执行,包括:
一个类组件,宣称一继承层次结构,用于一个或多个与动态编程语言相关联的标签化值;以及
一个规则组件,它减轻了来自继承标签化值中用户定义的类型。
2.如权利要求1所述的系统,将动态编程语言提供给编译器,所述编译器产生由虚拟机执行的中间语言指令。
3.如权利要求1所述的系统,动态编程语言包括Perl、Scheme、Ruby、Python和Smalltalk的至少一个。
4.如权利要求2所述的系统,虚拟机包括虚拟执行系统(VES)、通用语言运行时间(CLR)和Java虚拟机的至少一个。
5.如权利要求1所述的系统,以一个分叉的类结构宣称标签化值,所述分叉的类结构具有在类结构的一边或根的标签化值以及在类的另一边或根中的非标签化或用户定义的值。
6.如权利要求1所述的系统,标签化值遵守定义通用语言基础结构(CLI)的“ECMA标准”。
7.如权利要求6所述的系统,ECMA标准包括至少五个部分,所述部分包括部分I:体系结构,部分II:元数据定义和语义,部分III:CIL指令集,部分IV:简档和库,以及部分V:附录。
8.如权利要求6所述的系统,通用语言基础结构(CLI)包括通用类型系统、元数据描述、通用语言规范和虚拟执行系统的至少一个。
9.如权利要求1所述的系统,继承层次结构包括代表不透明的、自然大小值的抽象根类型。
10.如权利要求9所述的系统,抽象根类型包括在相关树的一边上现有的System.Object层次结构以及在树的另一边上密封的类型。
11.如权利要求9所述的系统,抽象根类型对应于如在ECMA部分III提供的类型O的对象引用。
12.如权利要求9所述的系统,规则组件使用元数据确认规则,以促使用户定义类型不从抽象根类型和标签化值导出。
13.如权利要求1所述的系统,扩展标签化值以执行算术运算。
14.如权利要求9所述的系统,还包括一组件,所述组件在堆栈上加载与抽象根类型相关联的值,用于具有“.ref”后缀的指令变量。
15.如权利要求1所述的系统,还包括用于操纵标签化值的至少一个指令,所述指令包括强制转换类、测试类、用于将整数转换成对象引用的tag(标签)指令,以及用于将对象引用转换成整数的untag(非标签)指令至少之一。
16.计算机可读介质,具有存储在其上的计算机可读指令,所述指令用于实现权利要求1的类组件和规则组件的至少一个。
17.促进动态代码执行的系统,包括;
装置,用于分配一数据结构,所述数据结构具有与标签化值相关联的抽象对象类型和与用户定义值相关联的系统对象类型;以及
装置,用于防止系统对象类型从抽象对象类型继承。
18.促进标签化数据类型处理的方法,包括:
定义分叉的类结构,该类结构具有在所述结构的一边上的对象引用和在所述结构的另一边上的用户定义引用;以及
在动态编程环境中执行分叉的类结构。
19.如权利要求18所述的方法,还包括自动地检查用户定义的引用不是从对象引用继承属性的。
20.如权利要求18所述的方法,还包括扩展分叉的类结构以执行算术运算。
21.如权利要求18所述的方法,还包括使用表示所希望的类的元数据标记。
22.如权利要求18所述的方法,还包括处理异常、验证结果和执行堆栈运算的至少之一。
23.如权利要求18所述的方法,还包括测试对象是否是类的实例。
24.如权利要求18所述的方法,还包括将对象强制转换为类。
25.如权利要求18所述的方法,还包括将整数转换成对象引用。
26.如权利要求18所述的方法,还包括将对象引用转换成整数。
27.计算机可读介质,具有存储在其上的数据结构,包括:
具有对象引用类型的第一数据字段;
具有至少一个能从对象引用类型继承的标签化值的第二数据字段;以及
具有至少一个不是从对象引用类型继承的非标签化值的第三数据字段。
CNB2004100489029A 2003-06-10 2004-06-09 动态运行时间环境中使用标签化类型的系统和方法 Expired - Fee Related CN100507837C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/458,460 2003-06-10
US10/458,460 US7168063B2 (en) 2003-06-10 2003-06-10 Systems and methods for employing tagged types in a dynamic runtime environment

Publications (2)

Publication Number Publication Date
CN1573688A true CN1573688A (zh) 2005-02-02
CN100507837C CN100507837C (zh) 2009-07-01

Family

ID=33299639

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100489029A Expired - Fee Related CN100507837C (zh) 2003-06-10 2004-06-09 动态运行时间环境中使用标签化类型的系统和方法

Country Status (5)

Country Link
US (2) US7168063B2 (zh)
EP (1) EP1486870B1 (zh)
JP (1) JP4994580B2 (zh)
KR (1) KR101046035B1 (zh)
CN (1) CN100507837C (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1828591B (zh) * 2005-03-04 2011-07-27 微软公司 命令行数据类型发现和转换
CN1841378B (zh) * 2005-03-28 2012-06-20 微软公司 用于对udt的数据格式执行流式检查的系统和方法
WO2019033740A1 (zh) * 2017-08-18 2019-02-21 平安科技(深圳)有限公司 一种内存数据的更新方法、终端、设备以及可读存储介质
CN112114862A (zh) * 2019-06-20 2020-12-22 普天信息技术有限公司 spring boot实例并发处理方法及装置
CN113377638A (zh) * 2021-06-11 2021-09-10 北京百度网讯科技有限公司 性能测试工具的生成方法和装置
CN114741084A (zh) * 2021-01-08 2022-07-12 腾讯科技(深圳)有限公司 一种类型转换方法、装置以及计算机设备
CN115686888A (zh) * 2022-12-30 2023-02-03 浙江城云数字科技有限公司 一种基于规则的处置行为流程编排方法、装置及应用

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050165837A1 (en) * 2004-01-22 2005-07-28 International Business Machines Corporation System and method for embedded java memory footprint performance improvement
US8701095B2 (en) * 2005-07-25 2014-04-15 Microsoft Corporation Add/remove memory pressure per object
US8176469B2 (en) * 2006-05-04 2012-05-08 Oracle International Corporation Inter language interoperability using a variant type
CN100403260C (zh) * 2006-08-24 2008-07-16 上海科泰世纪科技有限公司 一种构件的继承方法
US8190661B2 (en) * 2007-01-24 2012-05-29 Microsoft Corporation Using virtual repository items for customized display
US8850414B2 (en) * 2007-02-02 2014-09-30 Microsoft Corporation Direct access of language metadata
US8145673B2 (en) 2007-02-16 2012-03-27 Microsoft Corporation Easily queriable software repositories
US20080201330A1 (en) * 2007-02-16 2008-08-21 Microsoft Corporation Software repositories
US8490051B2 (en) * 2007-02-28 2013-07-16 Microsoft Corporation Generic interface for numeric types
US20080250325A1 (en) * 2007-04-03 2008-10-09 Feigenbaum Barry A Integrated Development Environment with Object-Oriented GUI Rendering Feature
US20080282238A1 (en) * 2007-05-10 2008-11-13 Microsoft Corporation Static type for late binding
US7831625B2 (en) * 2007-05-16 2010-11-09 Microsoft Corporation Data model for a common language
US8387020B1 (en) * 2007-07-25 2013-02-26 Google Inc. Verifying that a method has been implemented for a program written in a dynamic programming language
US8918772B1 (en) 2007-07-25 2014-12-23 Google Inc. Statically analyzing program correctness for a dynamic programming language
US8261248B2 (en) * 2007-11-05 2012-09-04 Sap Ag System and method of executing a dynamic program in a structured environment
US8011008B2 (en) * 2007-11-13 2011-08-30 Microsoft Corporation Application security model
US8601448B2 (en) * 2007-12-05 2013-12-03 Microsoft Corporation Representing pointers and boxing in environments using only reference types
US8140963B2 (en) * 2007-12-19 2012-03-20 Yahoo! Inc. Tag aggregator
US8250524B2 (en) * 2007-12-21 2012-08-21 Microsoft Corporation Contract programming for code error reduction
US9032374B2 (en) * 2008-04-03 2015-05-12 International Business Machines Corporation Metadata-integrated debugger
US20090271765A1 (en) * 2008-04-29 2009-10-29 Microsoft Corporation Consumer and producer specific semantics of shared object protocols
US8095963B2 (en) 2008-04-30 2012-01-10 Microsoft Corporation Securing resource stores with claims-based security
US9164737B2 (en) * 2008-05-16 2015-10-20 Microsoft Technology Licensing, Llc Augmenting programming languages with a type system
US8336035B2 (en) * 2008-12-16 2012-12-18 Microsoft Corporation Customizable dynamic language expression interpreter
US8782607B2 (en) 2009-02-20 2014-07-15 Microsoft Corporation Contract failure behavior with escalation policy
US8095571B2 (en) * 2009-06-22 2012-01-10 Microsoft Corporation Partitioning modeling platform data
GB2486965B (en) * 2009-10-21 2016-08-03 Ibm Method and system for improving software execution time by optimizing a performance model
US8417800B2 (en) * 2010-07-16 2013-04-09 Broadcom Corporation Method and system for network configuration and/or provisioning based on open virtualization format (OVF) metadata
US8572574B2 (en) * 2010-07-16 2013-10-29 Fujitsu Limited Solving hybrid constraints to validate specification requirements of a software module
US8862640B2 (en) * 2011-04-25 2014-10-14 Microsoft Corporation Conservative garbage collecting and tagged integers for memory management
US8978007B2 (en) 2011-06-30 2015-03-10 Microsoft Technology Licensing, Llc Static metadata in dynamic programs
US9342450B2 (en) * 2011-11-29 2016-05-17 Red Hat Israel, Ltd. On-demand hypervisor memory mapping
KR20140052459A (ko) * 2012-10-24 2014-05-07 삼성에스디에스 주식회사 Odbc프로그램 자동 코딩 방법
CN103605543B (zh) * 2013-11-19 2017-06-06 北京国双科技有限公司 验证属性转换方法和装置
US10642903B2 (en) 2014-09-29 2020-05-05 International Business Machines Corporation Tagging and querying system objects
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10936713B2 (en) * 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US11360976B2 (en) 2017-08-31 2022-06-14 Oracle International Corporation Deployment of javascript and typescript stored procedures and user-defined functions into database management systems
WO2019152795A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for transforming instructions for metadata processing
TW201935306A (zh) 2018-02-02 2019-09-01 美商多佛微系統公司 用於安全初始化的策略連結及/或載入之系統和方法
SG11202007272QA (en) 2018-02-02 2020-08-28 Charles Stark Draper Laboratory Inc Systems and methods for policy execution processing
EP3788488A1 (en) 2018-04-30 2021-03-10 Dover Microsystems, Inc. Systems and methods for checking safety properties
US10684873B2 (en) * 2018-06-12 2020-06-16 Oracle International Corporation Efficient data decoding using runtime specialization
EP3877874A1 (en) 2018-11-06 2021-09-15 Dover Microsystems, Inc. Systems and methods for stalling host processor
EP3881190A1 (en) 2018-11-12 2021-09-22 Dover Microsystems, Inc. Systems and methods for metadata encoding
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
WO2021076871A1 (en) 2019-10-18 2021-04-22 Dover Microsystems, Inc. Systems and methods for updating metadata
US12253944B2 (en) 2020-03-03 2025-03-18 Dover Microsystems, Inc. Systems and methods for caching metadata
US11307837B2 (en) 2020-08-24 2022-04-19 International Business Machines Corporation Runtime type identification of an object utilizing class inheritance relationships
CN112333256B (zh) * 2020-10-28 2022-02-08 常州微亿智造科技有限公司 一种工业物联网下网络传输时数据转化框架系统及其方法
US12124576B2 (en) 2020-12-23 2024-10-22 Dover Microsystems, Inc. Systems and methods for policy violation processing

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519868A (en) * 1993-12-30 1996-05-21 International Business Machines Corporation Compilation of information contained in GDMO name bindings
GB2351370A (en) * 1999-06-25 2000-12-27 Ibm Data processing with policed object union
GB0023570D0 (en) * 2000-09-26 2000-11-08 Volantis Systems Ltd Web server
US6834301B1 (en) * 2000-11-08 2004-12-21 Networks Associates Technology, Inc. System and method for configuration, management, and monitoring of a computer network using inheritance
US7496892B2 (en) * 2003-05-06 2009-02-24 Andrew Nuss Polymorphic regular expressions

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1828591B (zh) * 2005-03-04 2011-07-27 微软公司 命令行数据类型发现和转换
CN1841378B (zh) * 2005-03-28 2012-06-20 微软公司 用于对udt的数据格式执行流式检查的系统和方法
WO2019033740A1 (zh) * 2017-08-18 2019-02-21 平安科技(深圳)有限公司 一种内存数据的更新方法、终端、设备以及可读存储介质
CN112114862A (zh) * 2019-06-20 2020-12-22 普天信息技术有限公司 spring boot实例并发处理方法及装置
CN112114862B (zh) * 2019-06-20 2023-12-22 普天信息技术有限公司 spring boot实例并发处理方法及装置
CN114741084A (zh) * 2021-01-08 2022-07-12 腾讯科技(深圳)有限公司 一种类型转换方法、装置以及计算机设备
CN113377638A (zh) * 2021-06-11 2021-09-10 北京百度网讯科技有限公司 性能测试工具的生成方法和装置
CN113377638B (zh) * 2021-06-11 2023-10-27 北京百度网讯科技有限公司 性能测试工具的生成方法和装置
CN115686888A (zh) * 2022-12-30 2023-02-03 浙江城云数字科技有限公司 一种基于规则的处置行为流程编排方法、装置及应用
CN115686888B (zh) * 2022-12-30 2023-03-21 浙江城云数字科技有限公司 一种基于规则的处置行为流程编排方法、装置及应用

Also Published As

Publication number Publication date
CN100507837C (zh) 2009-07-01
US20040255267A1 (en) 2004-12-16
JP2005004737A (ja) 2005-01-06
US7168063B2 (en) 2007-01-23
KR20040111020A (ko) 2004-12-31
EP1486870A3 (en) 2005-05-25
EP1486870B1 (en) 2016-04-13
US20070067372A1 (en) 2007-03-22
JP4994580B2 (ja) 2012-08-08
EP1486870A2 (en) 2004-12-15
US8024704B2 (en) 2011-09-20
KR101046035B1 (ko) 2011-07-01

Similar Documents

Publication Publication Date Title
CN1573688A (zh) 动态运行时间环境中使用标签化类型的系统和方法
JP4372348B2 (ja) マルチプル・クラスファイルのランタイムイメージへの結合
CN1181428C (zh) 软件翻译的内省编辑器系统、程序和方法
CN1120416C (zh) 采用外观类进行软件翻译的内观编辑器系统和方法
US7707566B2 (en) Software development infrastructure
CN1203404C (zh) 具有逐模块验证的完全迟缓链接
US6738968B1 (en) Unified data type system and method
US8065668B2 (en) Unified data type system and method
CN1149478C (zh) 从本地码有效调用Java方法的方法和设备
CN1208720C (zh) 用于对非置信模块进行可信验证的方法及装置
US9841953B2 (en) Pluggable components for runtime-image generation
CN1609796A (zh) 应用编程接口(api)的设计
CN1609764A (zh) 向输入法提供上下文的系统和方法
CN1641587A (zh) 用于改进爪哇虚拟机性能的方法和系统
CN1885265A (zh) 在无需修改源代码的情况下本地化java gui应用的系统和方法
CN1271892A (zh) 自动的承接软件/适配器生成器
CN1855053A (zh) 用于执行java虚拟机的指令的方法和设备
CN1229944A (zh) 用于减少预装类的脚印的系统和方法
CN1292527A (zh) 逐模块验证
Ranwez et al. Aligning protein-coding nucleotide sequences with MACSE
US20040268307A1 (en) Representing type information in a compiler and programming tools framework
US7634763B2 (en) Extensible multi-language compilation
CN1637708A (zh) 编译方法、编译装置及编译程序
CN1311375C (zh) 服务器和信息处理方法
CN1105508A (zh) 动态浏览窗系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150507

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150507

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090701

Termination date: 20200609