CN101390053A - 自适应编译的代码 - Google Patents
自适应编译的代码 Download PDFInfo
- Publication number
- CN101390053A CN101390053A CNA2007800065381A CN200780006538A CN101390053A CN 101390053 A CN101390053 A CN 101390053A CN A2007800065381 A CNA2007800065381 A CN A2007800065381A CN 200780006538 A CN200780006538 A CN 200780006538A CN 101390053 A CN101390053 A CN 101390053A
- Authority
- CN
- China
- Prior art keywords
- code
- type
- module
- computer
- quoting
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
Abstract
在管理的执行环境中,出错可被延迟直到应用程序、程序、函数、或其他代码集合的执行到达调用对与一缺少类型或类型成员相关联的模块的引用变得不可避免之时。
Description
背景
应用程序、程序、函数、和其他可编程和可执行代码的集合典型地被写成用于第三方(即, “顾客”)使用。因此,有效代码被写成这样的风格,即第三方使用场景被启用并且符合第三方的期望。然而,当被设计成运行在现存的平台上的应用程序、程序、函数和其他代码的集合试图运行在早期的或者另外不同版本的平台上时,这样的期望可能难以满足。
概述
当应用程序、程序、函数和其他代码的集合试图运行在比生成平台更早期的或者另外不同版本的平台上时,与缺少类型或类型成员相关联的错误就可能被延迟直到所述应用程序、程序、函数、或其他代码的集合达到调用对该缺少类型或类型成员的引用变得不可避免之时。
附图简述
本发明的描述引用以下附图。
图1表示经网络进行通信的设备,用此设备实现与自适应编译的代码相关的示例性技术。
图2表示用于实现与自适应编译的代码相关的示例性技术的执行环境示例。
图3表示用于自适应编译的代码的示例性数据结构。
图4表示用于实现与自适应编译的代码相关的示例性技术的示例性数据流。
详细描述
本文描述了用于编译自适应代码和执行该自适应编译的代码的工具、系统和方法。进而,与编译或执行一个或多个应用程序、程序、函数和其他代码集合的至少之一有关的描述可涉及工具、系统、进程、指令、技术、和例程,它们可被用于推迟与其相关联的错误。这就是,上述工具、系统、进程、指令、技术、和例程可被用于推迟与所述编译的代码中引用相关联的一个或多个错误,直到对该引用的调用至少在统计上不可避免为止。上述工具、系统、和进程可在网络环境中在一个或多个设备、或节点中实现。
如本文所述的“模块”表示分离的实体,诸如方法、类、DLL(动态连接库)、框架等,这些可被用作公共的物理和/或逻辑资源。
如本文所述“集合”表示为代码部署的单元。
图1表示示例性网络环境100,其中示例性技术可被实现用于编译自适应代码并执行具有至少一个自适应编译的模块的一个或多个应用程序、程序、函数和其他代码。然而,这类示例性技术并不局限于网络环境。这类技术可以包括但不限于与自适应编译的代码120相关联的工具、方法(例如,技术)、和系统,如本文所述。在图1中,客户设备105、服务器设备110、和“其他”设备儿5可以经由网络125彼此通信耦合;并且进一步,客户设备105、服务器设备110、和“其他”设备115的至少一个可有能力实现上述技术。
客户设备105可代表多种众所周知的计算设备的至少一种,包括桌上个人计算机(PC),工作站、大型计算机、因特网设备、机顶盒、或游戏控制台,这是能够实现用于产生和利用自适应编译的代码120的至少一个示例性技术。客户设备105还可以代表至少一种能够通过线路和/或无线链接与网络125相关联的设备,包括移动(蜂窝)电话、个人数字助理(PDA)、膝上型计算机等。再进而,客户设备105可代表以上描述的多种数量和/或其组合的客户设备。“其他”设备115也可以由任何以上客户设备105示例来具体化。
根据用于编译和利用自适应编译的代码120的至少之一的至少一种实现,服务器设备110可代表能够提供任何多种数据和/或功能给客户设备105或“其他”设备115的任何设备。数据可以是公共可用的或者是受限的,例如,仅限于特定用户或仅限于已支付适当的订阅或许可费的情况。服务器设备110可以是网络服务器、应用程序服务器、刀锋(blade)式服务器的至少一种、或他们的任何组合。典型地,服务器设备110可以代表作为内容源的任何设备,而客户设备105可以代表能经由网络125或以离线方式接收这类内容的任何设备。然而,根据本文描述的示例性实现,客户设备105和服务器设备110可在网络环境100中相互交换地作为发送结点或接收结点。“其他”设备115还可由任何以上服务器设备110的示例来具体化。
“其他”设备115可代表能够根据本文描述的一种或多种示例性技术编译和/或利用自适应编译的代码120的任何更多设备。即,“其他”设备115可以代表一种能够编译代码或接收编译的代码的设备,而对于这些代码,与所编译的代码中的引用相关联的一个或多个错误可以被延迟直到调用该引用至少在统计上不可避免为止。这样,“其他”设备115可以是计算或处理设备,具有操作系统、解释器、转换器、编译器的至少一种、或在其上实现的运行时执行环境。这些实例并不旨在以任何方式加以限制,并且因此不应该按这种方式解释。
网络125可代表多种常规网络拓朴和类型的任一种,可以包括有线和/或无线网络。网络125可进一步利用多种常规网络协议的任一种,包括公用和/或专有协议。网络125可以包括例如因特网和一个或多个局域网(也独立称为“LAN”)的至少一部分,例如802.11系统;或在大范围上的广域网(即“WAN”);或者私域网(即,PAN),例如蓝牙。
在设备105、110、和115的至少一个中的计算机体系结构具有被典型被定义地有关硬件和软件的计算平台。用于计算设备的软件基于功能被分类成组,它包括:硬件提取层(也称为“HAL”)、操作系统(也称为“OS”)、和应用程序。
运行时执行环境可驻留在OS和应用程序、程序、函数及其他代码集合之间。运行时执行环境可服务作为在其中应用程序、程序、函数和其他代码集合可以在任何一个或多个处理设备105,110和115上执行特定任务的空间。更具体地,运行时执行环境可以在包括服务器、桌上计算机、膝上型计算机、和移动处理/通信设备的处理设备105,110和115的成长范围上,增强应用程序、程序、函数和其他代码集合的执行可靠性,这是通过提供提取层和用于运行在这样的设备上的应用程序的服务,以及通过进一步提供给应用程序、程序、函数和其他代码集合以包括对其的存储器管理和配置能力来实现的。
运行时执行环境可服务作为程序设计和执行平台。作为程序设计平台,运行时执行环境可编译一个或多个目标应用程序、程序、函数、或其他代码的集合,它可按多种计算语言之一编写成为一种中间语言(之后称“IL”)或字节代码。IL是典型独立于平台的,并且中央处理单元(之后称“CPU”)执行IL。事实上,IL和很多CPU机器语言相比是高级语言。
作为执行平台,运行时执行环境可将编译的IL解释为本机机器指令。运行时执行环境可以利用或者解释器或者编译器(例如,“即时(just-in-time)”或即“JIT”编译器)以执行这类指令。不管如何,本机机器指令然后可被CPU直接执行。由于IL是CPU无关的,因而IL可在任何CPU平台上执行,只要在CPU平台上运行的该OS主控适当的运行时执行环境。
另外,至少一部分应用程序、程序、函数和其他代码集合可在运行时执行环境中被预编译并装载为一个或多个本机映像文件,从而防止在编译中CPU消费需求过大。有效地,预编译部分是被分发为IL格式(例如,汇编、方法、或类型)而非本机平台执行格式的软件模块。这类预编译IL的源可在相同或分开的设备105、110、或115之一上或在一个非管理的执行环境中或在运行时执行环境的分开实现中布置。源可在安装时间期间或之前部署预编译的IL,用于与该预编译IL相应的应用程序、程序、函数和其他代码集合。
不管如何,其中用于编译和/或利用自适应编译的代码120技术可被实现的运行时环境示例包括:Visual Basic运行时环境;用于运行例如例程的Visual Machine(虚拟机)运行时环境;或者Common Language Runtime(CLR,公共语言运行时)以在执行调用例程之前将例如Microsoft.NETTM应用程序编译成机器语言。然而,运行时环境的列表仅提供示例。本文描述的示例性技术不只限于这些管理的执行环境。更具体地,该示例性实现不仅限于管理的执行环境,对于一个或多个示例可在测试环境和/或无管理的执行环境中被实现。
编码为IL的应用程序、程序、函数和其他代码集合可被称为“管理的代码”,并且这是运行时执行环境也可以被称为“管理的执行环境”的原因。注意到没有利用运行时执行环境进行执行的代码可被称作为本机代码应用程序。
图2表示运行时执行环境的示例200,在其中示例性技术可被实现用于编译自适应代码120(见图1)并执行具有至少一个自适应编译的模块的一个或多个应用程序、程序、函数和其他代码。
在图2的、也被图3和图4参照的模块的描述中,各种操作可被描述为由运行时执行环境200的不同部件完成。被描述为与特定部件有关的操作可由该特定部件自身完成,由该特定部件结合运行时执行环境200的另一部件完成,或者由该特定部件结合来自无管理的执行环境的处理部件完成。这样,本文提供的描述属于示例性实现,并且并不旨在以任何方式加以限制。
相应地,运行时执行环境200对于应用程序程序设计或应用程序执行平台都可有利于管理的代码的执行。管理的代码可被认为是应用程序开发技术的核心集的部分,并且可进一步看作被编译用作在运行时执行环境200上执行以对计算设备平台提供相应服务的代码。另外,运行时执行环境200可在解释级将管理的代码翻译成可被代理并随后由处理器执行的指令。用于运行时执行环境200的框架还提供类库,它可看作为用于管理的应用程序的软件构件块。
根据进一步的示例性实现,运行时执行环境200可提供本期望来自核的至少一部分功能,它依赖于对于所述特定设备105、110、和115之一的资源约束可以缺乏或者不缺乏计算设备平台。这样,运行时执行环境200的至少一个示例可实现以下:输入/输出(以下称“I/O”)例程管理;存储器管理;编译;和服务例程执行。这样,运行时执行环境200可包括I/O模块205;编译器210;装载器215;存储管理部件220(也称为虚拟机);和服务例程管理器225。这些部件将在以下进一步详细描述,并且仅提供作为示例,还可在其各种组合和配置中在运行时执行环境200的示例中实现。所述示例并不旨在对运行时执行环境的任何特定实现的限制,并且没有这类推论应被作出。
运行时执行环境200的I/O模块205可提供对数据源(即,处理器和外围设备)的异步访问,该数据源或与应用程序程序设计相关联或与应用程序执行平台相关联。更具体地,I/O模块205可提供给运行时执行环境200以完全强健的系统和进而由此I/O请求发生的代码的流水线性能。
编译器210可涉及在运行时执行环境200中的模块,它可将编译的IL解释为本机机器指令用于在运行时执行环境200中通过例如执行模块230执行,或者另外用于在无管理的执行环境中由CPU执行。
装载器215可涉及汇编管理器,可按需被调用以定位和读取各汇编。装载器215可被布置在执行环境200中,虽然至少一个无管理执行环境(即,OS)可在其中包括装载器215。装载器215可在部署或开发时间期间储藏预编译的IL,用于加载到运行时执行环境200。这样,根据至少一个可选的运行时执行环境200的实现,装载器215可有效地服务用作为预编译IL进入运行时执行环境200的入口点。
存储器管理部件220可被当作一个“垃圾收集器”。垃圾收集可作为管理的代码执行环境的强健特征,即如果对象不再被任何应用程序使用,则一旦打扫或扫描存储器堆就将对象自动释放(即,解除分配)。在存储器管理部件210的至少一个示例中,自由存储器堆的打扫可被实现为线性搜索。这类实现可以很好地适于,其存储器大小受到约束且打扫完成中的延迟可被相应设备的用户感知的计算设备平台示例。
由存储器管理部件220实现的进一步功能可以包括:管理有限易失性RAM(即,存储器堆)存储的一个或多个邻接块或者在计算设备平台上运行的任务之中存储器的一组邻接块集合;分配存储器给在计算设备平台上运行的至少一个应用程序;按照至少一个应用程序的请求释放至少部分存储器;以及防止任何应用程序入侵地访问已经被分配给任何其他应用程序的存储器空间。
管理员程序225可涉及在运行时执行环境200中的模块,它服务于接收、验证,和管控运行时执行环境200中的应用程序、程序、方法、函数或其他代码集合的至少一部分的执行。依据与编译的自适应代码120相关联的技术的至少一个示例性实现,管理员程序225可控制应用程序、程序、方法、函数或其他集合在运行时执行环境220中的行为,而在编译时刻,初始化时刻或在应用程序执行期间其后的任何时刻不接触或影响任何可执行部分。更具体地,管理员程序225可对被编译器210编译或被装载器215加载的代码实施类型匹配。即,管理员程序225可以在满足匹配的搜索中把由所述代码至少部分要求的类型或类型成员与满足这些要求的类型或类型成员相比较。在相应于要求的这一匹配不存在的情况下,管理员程序225可指令执行模块230处理由编译器210编译的或由装载器215加载的代码执行,直到对于缺少类型或缺少类型的成员的请求至少在统计上不可避免时为止。
执行模块230可启用管理的代码(即,被编译的本机代码)的执行用于计算设备平台。执行模块230可被看作一个模块,在其中由编译器210编译或装载器215加载的代码的执行可在运行时执行环境200中实现,并且在其中运行时服务(例如,设备访问和存储器管理)可被提供。
图3表示依照与自适应编译的代码120相关联的一个或多个示例性技术(见图1)的示例性数据结构300。更具体地,数据结构300可代表相应于包括对缺少类型或类型成员的引用的应用程序、程序、或函数的编译的代码的至少一部分。根据自适应编译的代码120的实现,与缺少类型或缺少类型成员相关联的错误可被延迟直到对引用的调用至少在统计上不可避免时为止。这种执行情景可(通常虽然决不排外地)发生在:当与数据结构300相对应的应用程序、程序、函数或其他代码集合试图在老的、或以其他方式不同于其它们生成平台版本上运行时,并且在编译时间、启动运行时、或其后与数据结构300相对应的应用程序、程序、函数或代码集合执行期间的任何时间经历验证过程。
模块305可涉及一个或多个可被执行指令的模块,该可被执行的指令相应于依照例如在运行时执行环境200中的执行部件230(见图2)而可被执行的应用程序、程序、函数或其他代码的集合。更具体地,模块305可涉及如方法、类、DLL(动态连接库)、框架等实体。模块305可被编译器210编译或者由装载器215加载到运行时执行环境200中。即,模块305可以是本机代码(即,机器可读代码)。
然而,模块305并不仅限于各本机代码示例。相反,在此描述技术的可替换实现可以是应用程序编码,它不是被编译的,并因此相应于中间语言代码或以多种已知的语言的任何一种编写的其他代码,对于这些语言多种句法特征和结构特点的至少一种可被采样。
模块310可涉及与模块305相关联的引用。更具体地,模块310的引用可以是针对不被包括在与数据结构300相应的应用程序、程序、函数或其他代码集合中的类型或类型的成员。然而,为了与在其中自适应编译的代码120的实现现正被描述的示例性场景一致,它可被汇编仅用于描述的目的,即模块310的引用所对应的类型或至少一种类型成员是缺少的。而且,被引用的类型或其成员可以是但决不限于整数、浮点、字符串、逻辑、或二进制数。
图4表示用于产生和利用至少一种编译和/或利用自适应编译的代码120(见图1)的示例性实现的示例性数据流400。
在以下描述中,各种操作将被描述为了或在数据结构300(见图3)的一个或多个模块上由与运行时执行环境200(见图2)相关联的部件来执行。关于这些部件的任何特定的一个所描述的操作可以由部件自身、与工具相关联的其他部件结合、或由与运行时执行环境200的一个或多个部件相结合的特定部件来实现。另外,所述操作可由一个或多个处理器执行,并且作为硬件、固件、或软件、或单一地或按各种在一起的组合实现。再进一步,当与数据结构300相应的应用程序、程序、函数或其他代码集合试图在与其生成平台不同的版本上运行时,这些操作通常虽然决不排外地发生,并且在编译时间、启动运行时间、或在与数据结构300相应的应用程序、程序、函数或代码集合的执行期间其后的任何时间经历一验证过程。
方框405可以涉及导致数据结构300的代码编译。
环境410可以是管理的执行环境,并且方框405可涉及将IL解释成本机机器指令的编译器,用于在管理的执行模块中执行或者可替换地用于在无管理的执行环境中的CPU执行。
替换地,环境410可涉及方框405,可涉及应用程序、程序、函数或其他代码集合,然后他们在前述管理的执行环境中被加载为一个或多个本机映像文件,这样防止CPU用于编译的消耗过大。
如上所述,数据结构300可代表包括对缺少的类型或类型成员的引用的、相应于应用程序、程序、或函数的编译的代码的至少一部分。
模块305可以涉及依照管理的执行环境是可执行的,相应于应用程序、程序、函数或其他代码集合的可执行指令的一个或多个模块。模块305涉及例如方法、类、DLL(动态连接库)、框架等实体。
模块310涉及没有被包括在相应于数据结构300的应用程序、程序、函数或代码集合中的类型或类型成员的引用。
方框410涉及执行相应于数据结构300的可执行代码305的运行时(即,管理的)执行环境200的执行模块230。
判定框415可涉及管理员程序225实现关于相应于数据结构300的应用程序、程序、函数或代码集合的验证过程。更具体地,管理员程序225比较在可执行代码305执行期间所要求的类型和类型成员,以确定这类要求是否由相应于数据结构300的,在应用程序、程序、函数或代码集合中发现的类型和类型成员所满足。
由管理员程序225实现的验证过程可发生在编译时间、启动运行时、或在相应于数据结构300的应用程序、程序、函数或代码集合的执行期间之后的任何时间。因此,管理员程序的功能的至少一部分可在数据流400期间的任何时刻发生,并且这样如图4所示和在此描述的数据流400是仅仅作为实例被提供。也就是,数据流400的可替换的实现并不限于在此示出并描述的次序。
不管如何,当验证过程揭示经历引用310的类型或类型成员没有被包括在相应于数据结构300的应用程序、程序、函数或代码集合中时,引用310可被标记或者以其他方式标注而不要求对与相应于数据结构300的应用程序、程序、函数或代码集合执行的中断。进一步,根据数据流400的至少一实现,管理员程序225可统计地确定当可执行代码的其他模块被执行时对缺少类型或类型成员的引用310的调用的可能性或概率。
否定判决框420可导致可执行代码305和与相应于数据结构300的应用程序、程序、函数或代码集合相关联的其他可执行代码的继续执行。也就是,虽然引用310是对不在相应于数据结构300的应用程序、程序、函数或代码集合中的类型或类型成员的,但是根据与自适应编译的代码120相关联的技术实现引用310不会导致错误。
肯定判决框425可如统计上的不可避免性而发生,如由管理员程序225在相应于数据结构300的应用程序、程序、函数或代码集合执行期间所确定,或者简单地作为引用310对被调用的缺少类型或类型成员的结果。
也就是说,如果针对相应于数据结构300或即引用310的应用程序、程序、函数或代码集合的可执行代码的模块执行达到对缺少类型或类型成员的引用310要被调用的统计上不可避免之时,则管理的执行环境可引发错误。换言之,简单地当对缺少类型或类型成员的引用310被调用时,管理的执行环境可引发错误。这类错误的一个非限制性示例可以是发出异常。
这样,通过以上对图1-4的描述,与对缺少类型或类型成员的引用相关联的错误可被延迟直到当对缺少类型或类型成员的引用实际地被调用的运行时。
然而,本文描述的示例性实现并不仅限于图1的环境、图2的部件、图3的模块、或图4的过程。与自适应编译的代码120(见图1)相关联的技术(例如,工具、方法、和系统)可由参照图2-4描述的特征的各种组合来实现。
进一步,用于以上描述的示例和实现的任何计算机环境可包括具有例如一个或多个处理器或处理单元、系统存储器、以及耦合各种系统部件的系统总线的计算设备。
计算设备可包括各种计算机可读介质,包括易失性和非易失性介质,可移动和不可移动介质。系统存储器可包括具有易失性存储器的形式的计算机可读介质,例如随机存取存储器(RAM);和/或非易失性存储器,例如只读存储器(ROM)或闪存RAM。可以理解,其他类型的能够存储计算机可访问的数据的计算机可读介质,例如磁带盒或其他磁存储设备;闪存卡;CD-ROM;数字通用盘(DVD)或其他光学存储;随机存取存储器(RAM);只读存储器(ROM);电可擦除可编程只读存储器(EEPROM)等,也能够被利用来实现示例性计算系统和环境。
本说明书全文对“一示例”、“替换示例”、“至少一个示例”、“一个实现”或“一个示例性实现”的引用意指被特定描述的特征、结构、或特点被包括在本发明的至少一个实现中。于是,这类短语的使用可涉及一个以上实现。而且,这些被描述的特征、结构、或特点可以是在一个或多个实现中的以任何适当的方式的组合。
然而,关于本领域的熟练技术人员可以认识到,代码模块的的初始化可以在无需一个或多个特定的细节或可由其他方法、资源、材料等来实现。在其他实例中,并未详尽示出并描述周知的结构、资源、或操作以免混淆本发明的各方面。
虽然已经示例并描述了代码模块初始化的示例性实现和应用程序,但应该理解本发明并不限于上述的精确配置和资源。本领域普通技术人员显而易见的是可以对在本文公开的本发明的安排、操作、以及方法和系统细节做出各种修改,改变,和变化而不背离如上描述和如下声明的本发明范围。
Claims (20)
1.一种其上具有经验证的数据结构的计算机可读介质,所述数据结构包括:
可执行模块;以及
对与一类型相关联的模块进行引用的引用模块,,所述类型是与所述编译的数据结构相关联的代码集合所缺少的。
2.如权利要求1所述的计算机可读介质,其特征在于,所述可执行模块是方法。
3.如权利要求1所述的计算机可读介质,其特征在于,与缺少的类型相关联的所述模块是类型。
4.根据权利要求1所述的计算机可读介质,其特征在于,与缺少的类型相关联的所述模块是类型成员。
5.如权利要求1所述的计算机可读介质,其特征在于,对所述引用模块的调用发出异常。
6.如权利要求1所述的计算机可读介质,其特征在于,所述经验证的数据结构在运行时执行环境中被编译。
7.如权利要求1所述的计算机可读介质,其特征在于,所述经验证的数据结构以编译的形式由运行时执行环境接收。
8.一种方法,包括:
验证源代码;
将经验证的源代码编译成机器语言;
调用与所述机器语言相关联的方法;以及
当所述调用包括对与所述编译的源代码所缺少的类型相关联的模块的引用时引发错误。
9.如权利要求8所述的方法,其特征在于,所述方法在管理的执行环境中被执行。
10.如权利要求8所述的方法,其特征在于,所述编译在管理的执行环境外被执行,而所述调用和所述引发在该所述管理的执行环境内被执行。
11.如权利要求8所述的方法,其特征在于,对与所述编译的源代码所缺少类型相关联的所述模块的引用被包括在编译的源代码中。
12.如权利要求8所述的方法,其特征在于,对与所述编译的源代码所缺少类型相关联的所述模块的引用是对类型的引用。
13.如权利要求8所述的方法,其特征在于,对与所述编译的源代码所缺少类型相关联的所述模块的引用是对类型成员的引用。
14.其上具有一个或多个可执行指令的至少一个计算机可读介质,当所述指令被读取时使得一个或多个处理器:
验证源代码;
将所述经校验的源代码编译成本机机器代码;
执行包括对所述编译的代码所缺少模块的引用的本机机器代码;以及
当所述本机机器代码的执行被确定为包括对所述引用的不可避免调用时引发错误。
15.如权利要求14所述至少一个计算机可读介质,其特征在于,用于编译所述经验证源代码的所述一个或多个可执行指令在管理的执行环境中执行。
16.如权利要求14所述至少一个计算机可读介质,其特征在于,用于编译所述经验证源代码的所述一个或多个可执行指令由即时编译器执行。
17.如权利要求14所述至少一个计算机可读介质,其特征在于,用于编译所述经验证源代码的所述一个或多个可执行指令在无管理的执行环境中执行,并且所述本机机器代码随后由管理的执行环境接收。
18.如权利要求14所述至少一个计算机可读介质,其特征在于,对所述编译的代码所缺少模块的引用是对类型的引用。
19.如权利要求14所述至少一个计算机可读介质,其特征在于,对所述编译的代码所缺少模块的引用是对类型成员的引用。
20.如权利要求14所述至少一个计算机可读介质,其特征在于,当本机机器代码的执行被确定为包括对会引发所述一个或多个处理器统计上确定对所述引用调用必然性的引用进行不可避免调用时,所述一个或多个指令引发错误。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/276,362 US8615743B2 (en) | 2006-02-27 | 2006-02-27 | Adaptive compiled code |
US11/276,362 | 2006-02-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101390053A true CN101390053A (zh) | 2009-03-18 |
Family
ID=38437698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800065381A Pending CN101390053A (zh) | 2006-02-27 | 2007-01-25 | 自适应编译的代码 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8615743B2 (zh) |
EP (1) | EP1999583A4 (zh) |
JP (1) | JP2009528589A (zh) |
KR (1) | KR20080103970A (zh) |
CN (1) | CN101390053A (zh) |
WO (1) | WO2007097881A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699485A (zh) * | 2015-03-19 | 2015-06-10 | 神华集团有限责任公司 | 海量程序管理方法及构建方法 |
CN105723336A (zh) * | 2013-10-04 | 2016-06-29 | 微软技术许可有限责任公司 | 构建时解析和类型检查引用 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1752874A1 (en) * | 2005-07-19 | 2007-02-14 | Alcatel | Adaptive evolutionary computer software product |
US8473971B2 (en) | 2005-09-06 | 2013-06-25 | Microsoft Corporation | Type inference and type-directed late binding |
US8615743B2 (en) * | 2006-02-27 | 2013-12-24 | Microsoft Corporation | Adaptive compiled code |
US20080320453A1 (en) * | 2007-06-21 | 2008-12-25 | Microsoft Corporation | Type inference and late binding |
US8572591B2 (en) | 2010-06-15 | 2013-10-29 | Microsoft Corporation | Dynamic adaptive programming |
US9256401B2 (en) | 2011-05-31 | 2016-02-09 | Microsoft Technology Licensing, Llc | Editor visualization of symbolic relationships |
US9940218B2 (en) * | 2016-02-15 | 2018-04-10 | International Business Machines Corporation | Debugging optimized code using fat binary |
KR102253238B1 (ko) * | 2020-12-09 | 2021-05-18 | 넷마블 주식회사 | 분산 컴파일링을 검증하는 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5655122A (en) * | 1995-04-05 | 1997-08-05 | Sequent Computer Systems, Inc. | Optimizing compiler with static prediction of branch probability, branch frequency and function frequency |
US5857104A (en) * | 1996-11-26 | 1999-01-05 | Hewlett-Packard Company | Synthetic dynamic branch prediction |
EP1056004A2 (en) * | 1999-05-27 | 2000-11-29 | Sun Microsystems, Inc. | Fully lazy linking. |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63163636A (ja) | 1986-12-26 | 1988-07-07 | Hitachi Ltd | 並列処理実行方式 |
US5748966A (en) * | 1994-12-30 | 1998-05-05 | The Trustees Of The University Of Pennsylvania | Type error checker for type-free or polymorphic computer language |
DE69528749T2 (de) * | 1995-02-17 | 2003-09-18 | Ibm | Objektorientierte Programmierschnittstelle zur Entwicklung und zur Ausführung einer Netzwerkverwaltungsapplikation auf einer Netzwerkkommunikationsinfrastruktur |
US6003095A (en) | 1996-10-31 | 1999-12-14 | International Business Machines Corporation | Apparatus and method for demand loading a dynamic link library |
US6314566B1 (en) | 1998-09-29 | 2001-11-06 | Apple Computer, Inc. | Method and apparatus for “Just-in-Time” dynamic loading and unloading of computer software libraries |
US20020147969A1 (en) * | 1998-10-21 | 2002-10-10 | Richard A. Lethin | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
US6321377B1 (en) * | 1998-12-03 | 2001-11-20 | International Business Machines Corporation | Method and apparatus automatic service of JIT compiler generated errors |
US6636885B1 (en) | 1999-03-26 | 2003-10-21 | Sun Microsystems, Inc. | System using interface class in client computer to resolve references and retrieve delayed class applet from server |
US6484313B1 (en) * | 1999-06-30 | 2002-11-19 | Microsoft Corporation | Compiling and persisting of intermediate language code |
US6560774B1 (en) * | 1999-09-01 | 2003-05-06 | Microsoft Corporation | Verifier to check intermediate language |
GB2358261B (en) * | 2000-01-17 | 2004-06-09 | Advanced Risc Mach Ltd | Data processing with native and interpreted program instruction words |
US7080359B2 (en) * | 2002-01-16 | 2006-07-18 | International Business Machines Corporation | Stack unique signatures for program procedures and methods |
US6658657B1 (en) * | 2000-03-31 | 2003-12-02 | Intel Corporation | Method and apparatus for reducing the overhead of virtual method invocations |
US7155606B1 (en) * | 2000-04-12 | 2006-12-26 | Microsoft Corporation | Method and system for accepting preverified information |
US6981249B1 (en) * | 2000-05-02 | 2005-12-27 | Microsoft Corporation | Methods for enhancing type reconstruction |
US6886094B1 (en) * | 2000-09-28 | 2005-04-26 | International Business Machines Corporation | Apparatus and method for detecting and handling exceptions |
US6851111B2 (en) | 2000-12-15 | 2005-02-01 | International Business Machines Corporation | System and method for class loader constraint checking |
US6993751B2 (en) * | 2001-05-14 | 2006-01-31 | Microsoft Corporation | Placing exception throwing instructions in compiled code |
US7076785B2 (en) * | 2001-08-15 | 2006-07-11 | Microsoft Corporation | Lazy loading with code conversion |
US6993755B1 (en) * | 2001-10-24 | 2006-01-31 | Sun Microsystems, Inc. | Dynamic compilation control |
US7296257B1 (en) * | 2002-08-01 | 2007-11-13 | Tymesys Corporation | Techniques for exception handling by rewriting dispatch table elements |
US7150004B2 (en) * | 2002-08-21 | 2006-12-12 | International Business Machines Corporation | Programmatically serializing complex objects using self-healing techniques |
US20060174235A1 (en) | 2003-02-18 | 2006-08-03 | Tomihisa Kamada | Native compile method, native compile preprocessing method, computer program, and server |
US7120898B2 (en) * | 2003-06-26 | 2006-10-10 | Microsoft Corporation | Intermediate representation for multiple exception handling models |
US20040268095A1 (en) | 2003-06-30 | 2004-12-30 | Tatiana Shpeisman | Efficient implementation of null reference check |
US7647629B2 (en) | 2004-02-03 | 2010-01-12 | Microsoft Corporation | Hosted code runtime protection |
US20070079290A1 (en) * | 2005-09-27 | 2007-04-05 | Bea Systems, Inc. | System and method for dimensional explorer for performance test |
US20070169036A1 (en) * | 2005-10-31 | 2007-07-19 | Dhi Technologies, Inc. | Incremental type inferencing engine |
US7770161B2 (en) * | 2005-12-28 | 2010-08-03 | International Business Machines Corporation | Post-register allocation profile directed instruction scheduling |
US8615743B2 (en) * | 2006-02-27 | 2013-12-24 | Microsoft Corporation | Adaptive compiled code |
US8572570B2 (en) * | 2010-06-10 | 2013-10-29 | Accenture Global Services Limited | Assisted compositional reasoning for test scripts |
-
2006
- 2006-02-27 US US11/276,362 patent/US8615743B2/en active Active
-
2007
- 2007-01-25 CN CNA2007800065381A patent/CN101390053A/zh active Pending
- 2007-01-25 JP JP2008556331A patent/JP2009528589A/ja active Pending
- 2007-01-25 EP EP07717090A patent/EP1999583A4/en not_active Ceased
- 2007-01-25 KR KR1020087020839A patent/KR20080103970A/ko not_active IP Right Cessation
- 2007-01-25 WO PCT/US2007/002320 patent/WO2007097881A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5655122A (en) * | 1995-04-05 | 1997-08-05 | Sequent Computer Systems, Inc. | Optimizing compiler with static prediction of branch probability, branch frequency and function frequency |
US5857104A (en) * | 1996-11-26 | 1999-01-05 | Hewlett-Packard Company | Synthetic dynamic branch prediction |
EP1056004A2 (en) * | 1999-05-27 | 2000-11-29 | Sun Microsystems, Inc. | Fully lazy linking. |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105723336A (zh) * | 2013-10-04 | 2016-06-29 | 微软技术许可有限责任公司 | 构建时解析和类型检查引用 |
CN105723336B (zh) * | 2013-10-04 | 2019-11-05 | 微软技术许可有限责任公司 | 用于构建时解析和类型检查引用的方法和系统 |
CN104699485A (zh) * | 2015-03-19 | 2015-06-10 | 神华集团有限责任公司 | 海量程序管理方法及构建方法 |
Also Published As
Publication number | Publication date |
---|---|
US8615743B2 (en) | 2013-12-24 |
JP2009528589A (ja) | 2009-08-06 |
EP1999583A1 (en) | 2008-12-10 |
KR20080103970A (ko) | 2008-11-28 |
EP1999583A4 (en) | 2009-04-15 |
WO2007097881A1 (en) | 2007-08-30 |
US20070240120A1 (en) | 2007-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101390053A (zh) | 自适应编译的代码 | |
CN101288070B (zh) | 可扩展元数据 | |
CN109034814B (zh) | 基于以太坊虚拟机的智能合约处理方法和装置 | |
US7730464B2 (en) | Code compilation management service | |
CN101292234B (zh) | 用于负载平衡的方法和系统 | |
CN103034484B (zh) | 本机堆分配的运行时类型标识 | |
CN102165423B (zh) | 选择性地使用缓解来评估存储器管理技术的有效性以减少错误 | |
CN101217571B (zh) | 用于多副本数据网格系统中的写/读文件操作的方法 | |
CN100462921C (zh) | 用于简档形成接口辅助类加载的方法和系统 | |
US20070011658A1 (en) | Memory management configuration | |
US10310900B2 (en) | Operating programs on a computer cluster | |
CN105612525A (zh) | 针对应用安全性的二进制转换和随机化系统 | |
CN103795759A (zh) | 一种虚拟机镜像文件的调度方法和系统 | |
US8701095B2 (en) | Add/remove memory pressure per object | |
CN107506221A (zh) | 应用程序升级方法、装置及设备 | |
CN102165426B (zh) | 选择性地使用缓解来减少错误的存储器管理技术 | |
CN108829342B (zh) | 一种日志存储方法、系统及存储装置 | |
CN108958660B (zh) | 分布式存储系统及其数据处理方法和装置 | |
KR20170121714A (ko) | Vnf 라이선스 관리 기능을 가진 nfvo 및 이를 이용한 vnf 라이선스 관리 방법 | |
WO2021013185A1 (zh) | 虚机迁移处理及策略生成方法、装置、设备及存储介质 | |
CN117492661A (zh) | 数据写入方法、介质、装置和计算设备 | |
CN112202855A (zh) | 裸金属服务器与弹性块存储的通信装置、智能网卡和系统 | |
US9176974B1 (en) | Low priority, multi-pass, server file discovery and management | |
US20070168742A1 (en) | Isolating code modules | |
CN1781127B (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 | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150727 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150727 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20090318 |