CN1556951A - 在具备解释器和编译器的混合式系统中用于无用存储单元收集的被编译激活框架内的惰型标记 - Google Patents

在具备解释器和编译器的混合式系统中用于无用存储单元收集的被编译激活框架内的惰型标记 Download PDF

Info

Publication number
CN1556951A
CN1556951A CNA028186257A CN02818625A CN1556951A CN 1556951 A CN1556951 A CN 1556951A CN A028186257 A CNA028186257 A CN A028186257A CN 02818625 A CN02818625 A CN 02818625A CN 1556951 A CN1556951 A CN 1556951A
Authority
CN
China
Prior art keywords
mark
activation frames
activation
code
type
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
CNA028186257A
Other languages
English (en)
Other versions
CN1307546C (zh
Inventor
K
K·伦德
L·巴克
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of CN1556951A publication Critical patent/CN1556951A/zh
Application granted granted Critical
Publication of CN1307546C publication Critical patent/CN1307546C/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • 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/4482Procedural
    • G06F9/4484Executing subprograms
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明的一个实施例提供了一种在被编译激活框架中以惰性方式键入标记值以便于无用存储单元收集的系统。这个系统以一种混合式环境工作,其同时支持字节代码的解释和被编译本机代码的执行。当接收一个方法调用时,该系统在该执行栈上生成一个用于该方法的激活框架。如果该方法执行于被解释的模式,解释器在执行期间对于每个值在该激活框架中保持一个标记。该标记表示是否该值是一个引用类型或者基本类型。但是,如果该方法执行于被编译模式,该系统在该激活框架中对于每个值分配用于标记的空间,但是在执行期间不填充该标记中。这允许该标记在将来需要时被填充。

Description

在具备解释器和编译器的混合式系统中 用于无用存储单元收集的被编译激活框架内的惰型标记
发明背景
技术领域
本发明涉及用于计算机系统的编译器。更具体地说,本发明涉及一种简化用于编译激活的惰型标记以便于无用存储单元收集的方法和装置。
背景技术
因特网呈指数的增长部分是由计算机语言的发展、诸如由美国加利福尼亚州Palo Alto的太阳微系统公司开发的JAVATM程序设计语言的发展所推动的。JAVA程序设计语言允许一个应用软件被编译为一个模块,该模块包括不依赖平台的字节代码,其可以通过由很多不同的计算机系统组成的网络被分配。因此任何计算机系统在拥有相应的不依赖平台的虚拟机如java虚拟机的情况下,均能够执行字节代码。通过这种方式,单一一种形式的应用软件即可以容易地被许多不同的计算平台分配和执行。
当以不依赖平台的形式接收一个应用软件时,该应用软件可以通过解释器直接得到解释,或者其可以被编译为用于本计算平台的本地体系结构的机器码。执行本机代码通常显著快于解释不依赖平台的字节代码。但是,本机代码所占据的空间远大于相应的字节代码。某些“混合式”计算机系统既支持字节代码的解释,也支持被被编译本机代码的执行。
不依赖平台的虚拟机周期性地执行无用存储单元收集操作,以收回预先分配的已不再使用的存储空间。在无用存储单元收集操作期间,必须识别在堆栈上激活框架(activation frame)内的指示字。传统上,这是通过对当前执行的每种方法保持栈地图(stack map),或者通过对于在每个激活框架中的每个值保持一个标记、表示是否该值是一个引用类型或者基本类型来完成的。虽然对于每个值保持标记便于更简单的无用存储单元收集,但对于每个值保持标记所带来的开销会降低执行速度。这可以通过下面的事实解释:很多方法从执行到完成并非一定要通过无用存储单元收集操作来查验。因此,对这些方法保持标记所占用的时间基本上是被浪费了。
此外,在“混合式”系统中,无用存储单元收集操作典型地利用二种不同类型的激活框架工作,因为用于被编译方法的激活框架通常在结构方面与用于被解释方法的激活框架不同。请注意,一个用于某方法的被解释版本的激活框架典型地大于一个相应的用于该方法的被编译版本的激活框架。这是因为用于被解释版本的激活框架通常包括附加数据,如类型标记,其占据更多的空间。因此,以二种不同类型的激活框架工作使无用存储单元收集操作以及其他借助于激活框架直接处理的操作大幅地复杂化。
因此,需要这样一种方法和装置:其便于供编译激活用的类型标记,而又没有如上所述的问题。
发明内容
本发明的一个实施例提供了一种系统,用于在被编译激活框架中以惰性方式标记类型值以便于无用存储单元收集。这种系统以一种混合式环境工作,其既支持字节代码的解释,也支持被编译本机代码的执行。当接收到一个方法的调用时,该系统在执行栈上生成一个用于该方法的激活框架。如果该方法以被解释的模式执行,在执行期间解释器对于每个值在该激活框架中保持一个标记。该标记表示是否该值是一个引用类型或者基本类型。但是,如果该方法以被编译模式执行,则系统在激活框架中对于每个值分配用于标记的空间,然而在执行期间不在该标记中进行填充。这使得该标记可以在将来需要时被填充。
在对这个实施例的变化中,在接收到一个方法调用之前,系统将该方法的字节代码编译为本机代码,并在完成该任务时,在该方法的激活框架中采集每个值的类型信息。该系统将此类型信息嵌入到与该方法有关的本机代码中。
在对该实施例的进一步变化中,该系统将该类型信息作为位向量嵌入,其中每一位指定是否在该激活框架中的相应值是一个基本类型或者引用类型。
在对该实施例的另一种进一步的变化中,该系统在本机代码中的空指令的操作数中嵌入该位向量。
在对该实施例的再一种进一步的变化中,该系统在本机代码中调用其他方法或者运行系统的指令之后的位置嵌入该位向量。
在对这个实施例的变化中,该系统执行无用存储单元收集操作。在该无用存储单元收集操作期间,系统由本机代码恢复类型信息,并且在该方法的激活框架中的标记中存储该类型信息。
在对该实施例的变化中,该系统对于以编译模式执行的方法和以解释模式执行的同样方法生成在结构上相同的激活框架。
附图说明
图1举例说明一个根据本发明实施例的计算装置。
图2举例说明一个根据本发明实施例的激活框架。
图3举例说明一个根据本发明实施例的被解释激活框架和被编译激活框架。
图4举例说明按照本发明的一个实施例由经过编译的代码流恢复标记信息的过程。
图5是一个举例说明在根据本发明实施例的无用存储单元收集期间恢复标记信息过程的流程图。
具体实施方式
下面所提供的说明为的是使所有本领域技术人员均可完成和使用本发明,且本说明是以特定应用及其需求的上下文形式提供的。对所公开的实施例的各种各样的修改,对于那些本领域技术人员来说将是容易而明显的,并且无需脱离本发明的精神和范围,在此处提出的一般原理即可应用于其他实施例和应用中。因此,本发明不应被限制在示出的实施例中,而是应与符合在此处所公开的原理和特点的最宽范围一致。
在详细说明中描述的数据结构和代码被典型地存储在计算机可读存储介质上,该计算机可读存储介质可以是存储供计算机系统用的代码和/或数据的任何装置或介质。这包括但不局限于是磁性和光学存储装置,如磁盘驱动器、磁带、CD(光盘)和DVD(数字多用途光碟或者数字视频光碟),以及包含在传输媒介中的计算机指令信号(当该信号被调制时有或者没有载波)。例如,该传输媒介可以包括一个通信网,如因特网。
计算装置
图1举例说明一个计算装置110,该计算装置根据本发明的一个实施例耦合到开发系统106。开发系统106通常可以包括任何类型的计算机系统,包括但不限于是基于微处理器、主计算机、数字信号处理器、便携式计算装置、个人管理器(personal organizer)、设备控制器、或处于一装置内的计算引擎的计算机系统。开发系统106包括开发单元108,其包括用于开发不依赖平台的应用软件的编程工具。这通常包括将来自源代码形式的应用软件以一种不依赖于平台的形式、如JAVA字节代码进行编译。
开发系统106经通信链路112耦合到计算装置110。计算装置110可以包括任何类型的计算装置或者系统,包括但不限于主计算机系统、服务器计算机系统、个人计算机系统、工作站、便携式计算机系统、袖珍型计算机系统、个人管理器或者设备控制器。计算装置110还可以包括一个被嵌入在另一装置如传呼机、蜂窝电话、电视接收机、汽车或者用具内的计算装置。
通信链路112可以包括任何永久性或者暂时性类型的通信信道,其可用于从开发系统106传送数据到计算装置110。这可以包括(但是不局限于)一个计算机网络,诸如以太网、无线通信链路或者电话线路。
计算装置110包括用于存储代码和数据的数据存储器114。计算装置110还包含虚拟机116,用于处理从数据存储器114恢复的不依赖平台的应用。
在开发过程期间,在开发单元108内建立一个类别文件(classfile)118。类别文件118包括在计算装置110中执行的不依赖平台的应用软件的成分。例如,类别文件118可以包括与一个面向对象的类相关的方法和字段。值得注意的是,这些方法是使用不依赖平台的字节代码119指定的。
接下来,类别文件118被从开发单元108经由通信链路112传送到计算装置110内的数据存储器114。这使虚拟机116可以执行一种利用了类别文件118内成分的应用软件。值得注意的是,虚拟机116通常可以包括能够执行不依赖平台的代码的任何类型的虚拟机,如由美国加利福尼亚州Palo Alto的太阳微系统公司所开发的JAVA VIRTUALMACHINETM(Sun,Sun Microsystems,Java和Java Virtual Machine是太阳微系统公司在美国及其他国家的商标或者注册商标)。
虚拟机116包括对象堆122,用于存储由在虚拟机116上执行的代码所操纵的对象。对象堆122还存储被编译的方法123。
虚拟机116还包括一个解释器120,其解释从数据存储器114恢复的不依赖平台的字节代码119以便于程序执行。在操作期间,当字节代码119被连续地读进解释器120内时,解释器120通常每次执行一个字节代码。
做为选择,虚拟机可以使用编译器121将方法进行编译,使其从字节代码形式被编译为本机代码形式,从而产生被编译的方法123,该被编译的方法存储在对象堆122中。
值得注意的是,一种被编译的方法可以与来自一个相关激活记录的信息一起,用于恢复该被编译方法的一种解释器等效代码。做为选择,该被编译方法的解释器等效代码可以被再次从数据存储器114恢复。因此,一种被编译方法的解释器等效代码通常可以在任何时候获得。
虚拟机116包括运行系统124。运行系统124保持用于线程130-131的状态信息。这种状态信息分别包括执行栈140-141。执行栈140-141分别存储线程130-131所执行的方法的激活记录。
运行系统124既可使用解释器120、也可使用从对象堆122接收的被编译方法123执行编码。当由虚拟机116调用一个方法时,该系统首先确定是否该方法作为一个经过解释的方法被调用。如果是,则运行系统124激活解释器120。
而另一方面,如果系统确定该方法是作为一个经过编译的方法被调用,运行系统124就执行与该方法有关的被编译的本机代码。如果没有可用的本机代码,则可以通过激活编译器121产生该本机代码,该编译器由字节代码产生本机代码指令。
虚拟机116还包括无用存储单元收集器150,其周期性地从对象堆122收回未使用的存储量。值得注意的是,无用存储单元收集器150还可以将被编译的方法移送到回收存储器。
激活框架
图2举例说明一种根据本发明实施例的激活框架。激活框架200包含值204、208和212。激活框架200还包含说明值204的标记202,说明值208的标记206,以及说明值212的标记210。值204和212均是以其相应标记表示的基本值。值208则为以标记206表示的引用类型。
被解释和被编译的激活框架
图3举例说明根据本发明实施例的一个被解释激活框架和一个被编译激活框架。被解释激活框架300包含值306,其为以相应的标记304表示的引用类型。被解释激活框架300还包含值310,其为以相应的标记308表示的基本类型。当解释字节代码119(该字节代码操作在被解释激活框架300中的值)的时候,解释器120以一种急迫方式(即尽可能快地更新它们)保持类型标记。这确保了被解释的激活框架300具有对于所有的值都有效的类型标记。
被编译激活框架302包含值314、318和322。被编译激活框架302还包括说明值314的标记312,说明值318的标记316,以及说明值322的标记320。标记312、316和320保持为空,且当需要它们时被填充,诸如在无用存储单元收集期间,或者在去优化操作期间,如同由发明人Urs Hoize和Lars Bak在1997年10月6日申请、并在1999年8月3日颁布、名称为“用于动态地去优化编译的激活的方法和装置”的美国专利No.5,933,635中所论述的。在此将该申请作为参考资料加以结合。如果在将来某时刻标记被填充,那么被编译激活框架302就变得实质上与被解释激活框架300相同,并且可通过同样方式处理。
在一个被编译的激活框架中填充标记信息
图4举例说明按照本发明的一个实施例由被编译的代码流恢复标记信息的过程。当需用标记312、316和320来确定值314、318和322是基本类型还是引用类型的时候,用于标记的类型信息被从代码流402中恢复。这是通过使用程序计数器400去识别与被编译激活框架302有关方法的本机代码在代码流402中的位置来实现的。
在本发明的一个实施例中,代码流402包括一个紧随指令“调用foo”404的空指令406,其中指令“调用foo”404调用一个方法或者运行系统。对应于标记312、316和320的值被存储在空指令406的一个操作数中。
在本发明的另一实施例中,代码流402包含对应于标记312、316和320的值,它们紧随指令调用foo 404之后被存储为32位字。在这个实施例中,在对foo的调用之后,对foo的调用返回一个4字节地址,使得执行流跳过上述32位字。
值得注意的是,紧随指令foo的32位字包含用于每个标记的单个位,该位表示是否该标记与一个引用类型有关。因此,32位字可以存储高达32个标记的信息。
在无用存储单元收集操作期间恢复标记信息
图5是一个举例说明根据本发明实施例的在无用存储单元收集操作期间恢复标记信息的过程的流程图。该无用存储单元收集操作开始于遍历执行栈以定位根(root),根是进入堆的基准,用于在堆中定位对象以便进行无用存储单元收集(步骤502)。接着,无用存储单元收集操作使用程序计数器从被编译的代码流中恢复用于激活的类型标记信息(步骤504)。一旦这一信息被恢复,无用存储单元收集操作就将该标记信息插入处于激活框架中的适当标记内(步骤506)。接着,无用存储单元收集操作使用在激活框架中被识别的基准而继续进行(步骤508)。注意,以上描述的在无用存储单元收集操作期间恢复标记信息的过程可以在一种所有方法均在执行之前被编译的系统中实现,也可以在一种混合模式的系统中实现。
以上进行本发明实施例的描述仅仅是为了举例和描述。其用意并非是要穷举或将本发明限制为所公开的形式。因此,对于本领域专业技术人员来说许多的修改和变化将是显而易见的。另外,以上所述的公开并非是要限制本发明。本发明的范围是由所附权利要求限定的。

Claims (21)

1.一种用于在被编译激活框架中键入标记值以便于无用存储单元收集的方法,其中该方法工作于一种混合模式系统中,该混合模式系统既支持字节代码的解释,又支持被编译本机代码的执行,该方法包括:
接收一个方法的调用;
在执行栈上生成一个用于该方法的激活框架;
解释字节代码方法;
其中如果该方法以被解释模式被执行,该解释包括在执行期间,在该激活框架中对于每个值保留一个标记,其中一给定的标记表示是否一给定值为引用类型或者基本类型;和
其中如果该方法以被编译模式被执行,生成该激活框架包括在该激活框架中对于每个值分配用于标记的空间,其中一给定的标记表示是否一给定值为引用类型或者基本类型,借此,在该激活框架中将类型信息存储进该标记的操作被推迟,直到发生一个后续的无用存储单元收集操作为止。
2.根据权利要求1的方法,其中在接收对于方法的调用之前,该方法进一步包括:
将该方法的字节代码编译为本机代码;
其中该编译过程包括:
在该方法的激活框架中对于每个值采集类型信息;和
将该类型信息嵌入到与该方法有关的该本机代码中。
3.根据权利要求2的方法,其中将该类型信息嵌入到该本机代码包括将该类型信息作为位向量存储,其中每个位规定是否在该激活框架中的一个对应值为基本类型或者引用类型。
4.根据权利要求3的方法,其中该位向量被嵌入在该本机代码中的空指令的操作数内。
5.根据权利要求3的方法,其中该位向量被嵌入在该本机代码中调用其他方法或者运行系统的指令之后的位置上。
6.根据权利要求2的方法,进一步包括:执行一个无用存储单元收集操作,其中该无用存储单元收集操作包括:
由该本机代码恢复类型信息;和
在该方法的激活框架中的该标记中存储该类型信息。
7.根据权利要求1的方法,其中当以被编译模式执行时对于该方法生成的该激活框架和当以被解释模式执行时对于该方法生成的该激活框架在结构上是相同的。
8.一种存储指令的计算机可读存储介质,当由计算机执行该指令的时候,使得该计算机去执行一种用于在被编译激活框架中键入标记值以便于无用存储单元收集的方法,其中该方法工作于一种混合模式系统中,该混合模式系统既支持字节代码的解释,又支持编译本机代码的执行,该方法包括:
接收一个方法的调用;
在该执行栈上生成一个用于该方法的激活框架;
解释字节代码方法;
其中如果该方法以被解释模式执行,该解释包括在执行期间,在该激活框架中对于每个值保留一个标记,其中一给定的标记表示是否一给定值为引用类型或者基本类型;和
其中如果该方法被以编译模式执行,生成该激活框架包括在该激活框架中对于每个值分配用于标记的空间,其中一给定的标记表示是否一给定值为引用类型或者基本类型,借此,在该激活框架中将类型信息存储进该标记的操作被推迟,直到发生一个后续的无用存储单元收集操作为止。
9.根据权利要求8的计算机可读存储介质,其中在接收对于方法的调用之前,该方法进一步包括:
将该方法的字节代码编译为本机代码;
其中该编译过程包括:
在该方法的激活框架中对于每个值采集类型信息;和
将该类型信息嵌入到与该方法有关的该本机代码中。
10.根据权利要求9的计算机可读存储介质,其中将该类型信息嵌入到该本机代码包括将该类型信息作为位向量存储,其中每个位规定是否在该激活框架中的一个对应值为基本类型或者引用类型。
11.根据权利要求10的计算机可读存储介质,其中该位向量被嵌入在该本机代码中的空指令的操作数内。
12.根据权利要求10的计算机可读存储介质,其中该位向量被嵌入在该本机代码中调用其他方法或者运行系统的指令之后的位置上。
13.根据权利要求9的计算机可读存储介质,其中该方法进一步包括:执行一个无用存储单元收集操作,其中该无用存储单元收集操作包括:
由该本机代码恢复类型信息;和
在该方法的激活框架中的该标记中存储该类型信息。
14.根据权利要求8的计算机可读存储介质,其中当以被编译模式执行时对于该方法生成的该激活框架和当以被解释模式执行时对于该方法生成的该激活框架在结构上是相同的。
15.一种用于在被编译激活框架中键入标记值以便于无用存储单元收集的装置,其中该装置被配置为工作于一种混合模式系统中,该混合模式系统既支持字节代码的解释,又支持编译本机代码的执行,该装置包括:
接收装置,其被配置用于接收方法的调用;
生成装置,其被配置用于在执行栈上生成一个用于该方法的激活框架;
解释装置,其被配置用于解释字节代码方法;
其中如果该方法以被解释模式执行,该解释机构被配置用于在执行期间,在该激活框架中对于每个值保留一个标记,其中一给定的标记表示是否一给定值为引用类型或者基本类型;和
其中如果该该方法以被编译模式执行,该生成机构被配置用于在该激活框架中对于每个值分配用于标记的空间,其中一给定的标记表示是否一给定值为引用类型或者基本类型,借此,在该激活框架中将类型信息存储进该标记的操作被推迟,直到发生一个后续的无用存储单元收集操作为止。
16.根据权利要求15的装置,其中该装置进一步包括:
编译装置,其被配置用于将该方法的字节代码编译为本机代码;
其中该编译装置包括:
采集装置,其被配置用于在该方法的激活框架中对于每个值采集类型信息;和
嵌入装置,其被配置用于将该类型信息嵌入到与该方法有关的该本机代码中。
17.根据权利要求16的装置,其中该嵌入机构其被配置用于将该类型信息作为位向量存储,其中每个位规定是否在该激活框架中的一个对应值为基本类型或者引用类型。
18.根据权利要求17的装置,其中该位向量被嵌入在该本机代码中的空指令的操作数中。
19.根据权利要求17的装置,其中该位向量被嵌入在该本机代码中调用其他方法或者运行系统的指令之后的位置上。
20.根据权利要求16的装置,进一步包括:无用存储单元收集装置,其中该无用存储单元收集装置包括:
恢复装置,其被配置用于由该本机代码恢复类型信息;和
存储装置,其被配置用于在该方法的激活框架中的该标记中存储该类型信息。
21.根据权利要求15的装置,其中当以被编译模式执行时对于该方法生成的该激活框架和当以被解释模式执行时对于该方法生成的该激活框架在结构方面是相同的。
CNB028186257A 2001-11-14 2002-10-04 在混合型系统中进行垃圾回收的缓式标记 Expired - Fee Related CN1307546C (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US33292501P 2001-11-14 2001-11-14
US60/332,925 2001-11-14
US10/121,899 2002-04-12
US10/121,899 US7181732B2 (en) 2001-11-14 2002-04-12 Method and apparatus for facilitating lazy type tagging for compiled activations
PCT/US2002/031895 WO2003042824A1 (en) 2001-11-14 2002-10-04 Lazy type tagging in compiled activation frames for garbage collection in mixed-mode systems with interpreter and compiler

Publications (2)

Publication Number Publication Date
CN1556951A true CN1556951A (zh) 2004-12-22
CN1307546C CN1307546C (zh) 2007-03-28

Family

ID=26819938

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028186257A Expired - Fee Related CN1307546C (zh) 2001-11-14 2002-10-04 在混合型系统中进行垃圾回收的缓式标记

Country Status (4)

Country Link
US (1) US7181732B2 (zh)
EP (1) EP1444574A1 (zh)
CN (1) CN1307546C (zh)
WO (1) WO2003042824A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193866A (zh) * 2010-03-17 2011-09-21 索尼公司 存储装置和存储系统

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004040445A1 (en) * 2002-10-29 2004-05-13 Freescale Semiconductor, Inc. Method and apparatus for selectively optimizing interpreted language code
CN100395709C (zh) * 2003-02-20 2008-06-18 皇家飞利浦电子股份有限公司 一种用于指令转换的数据处理方法及其系统
US7412694B2 (en) * 2003-09-18 2008-08-12 International Business Machines Corporation Detecting program phases with periodic call-stack sampling during garbage collection
US7661096B2 (en) * 2004-02-13 2010-02-09 Microsoft Corporation Interaction with nested and non-nested streams
US8302082B2 (en) * 2006-06-07 2012-10-30 Intel Corporation Methods and apparatus to provide a managed runtime environment in a sequestered partition
JPWO2008032821A1 (ja) * 2006-09-15 2010-01-28 有限会社アプリコシステム データ送受信方法
US8037460B2 (en) * 2007-01-26 2011-10-11 Oracle International Corporation Code persistence and dependency management for dynamic compilation in a database management system
US8413125B2 (en) * 2007-01-26 2013-04-02 Oracle International Corporation Asynchronous dynamic compilation based on multi-session profiling to produce shared native code
US8341609B2 (en) * 2007-01-26 2012-12-25 Oracle International Corporation Code generation in the presence of paged memory
US10089210B2 (en) * 2007-03-29 2018-10-02 Microsoft Technology Licensing, Llc Auto-generation of provider functionality
US8949423B2 (en) * 2007-09-28 2015-02-03 International Business Machines Corporation Autonomically co-locating first and second components on a select server
US8904002B2 (en) * 2007-09-28 2014-12-02 International Business Machines Corporation Reducing overhead in component interactions
US8458676B2 (en) 2009-06-30 2013-06-04 International Business Machines Corporation Executing platform-independent code on multi-core heterogeneous processors
US9003377B2 (en) * 2010-01-07 2015-04-07 Microsoft Technology Licensing, Llc Efficient resumption of co-routines on a linear stack
US8863079B2 (en) * 2012-07-31 2014-10-14 Oracle International Corporation Efficient and expansive conversions between reference and primitive
US9256410B2 (en) 2012-08-09 2016-02-09 Apple Inc. Failure profiling for continued code optimization
US9110758B2 (en) * 2013-03-15 2015-08-18 Western Digital Technologies, Inc. Cross-platform software framework for embedded systems on data storage device
KR102509540B1 (ko) 2015-06-30 2023-03-14 삼성전자주식회사 저장 장치 및 그것의 가비지 컬렉션 방법
US20170083298A1 (en) * 2015-09-23 2017-03-23 Microsoft Technology Licensing, Llc Resilient format for distribution of ahead-of-time compiled code components

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6119206A (en) * 1996-02-12 2000-09-12 Sun Microsystems, Inc. Design of tags for lookup of non-volatile registers
US5953736A (en) * 1997-04-23 1999-09-14 Sun Microsystems, Inc. Write barrier system and method including pointer-specific instruction variant replacement mechanism
US6098089A (en) * 1997-04-23 2000-08-01 Sun Microsystems, Inc. Generation isolation system and method for garbage collection
US5893121A (en) * 1997-04-23 1999-04-06 Sun Microsystems, Inc. System and method for swapping blocks of tagged stack entries between a tagged stack cache and an untagged main memory storage
US5933635A (en) 1997-10-06 1999-08-03 Sun Microsystems, Inc. Method and apparatus for dynamically deoptimizing compiled activations
AU6748400A (en) * 1999-07-28 2001-02-19 Sun Microsystems, Inc. A single-compiler architecture

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193866A (zh) * 2010-03-17 2011-09-21 索尼公司 存储装置和存储系统
CN102193866B (zh) * 2010-03-17 2016-02-17 索尼公司 存储装置和存储系统

Also Published As

Publication number Publication date
WO2003042824A1 (en) 2003-05-22
US7181732B2 (en) 2007-02-20
EP1444574A1 (en) 2004-08-11
CN1307546C (zh) 2007-03-28
US20030093778A1 (en) 2003-05-15

Similar Documents

Publication Publication Date Title
CN1556951A (zh) 在具备解释器和编译器的混合式系统中用于无用存储单元收集的被编译激活框架内的惰型标记
EP1145120B1 (en) Generating compiled programs for interpretive runtime environments
CN1143210C (zh) 动态去最佳化编译启动的方法和装置
US5481713A (en) Method and apparatus for patching code residing on a read only memory device
US6446254B1 (en) Packaging memory image files
CA2290086C (en) Method for loading a java application program
EP0938050A2 (en) Modular storage method and apparatus for use with software applications
CN1119756C (zh) 用于进行静态初始化的方法和系统
US6446084B1 (en) Optimizing symbol table lookups in platform-independent virtual machines
CN1577268A (zh) 共享库系统及构建该系统的方法
US20040055004A1 (en) Method for efficient process state transfer between two computers using data transfer mechanisms embedded to the migration-enabled process
EP0835487A1 (en) Adaptive binding
CN1829977B (zh) 利用一个栈跟踪高速缓存器改善垃圾收集的性能的方法和装置
JP2005056415A (ja) 産業オートメーション用のcilコード・プログラムのオンライン修正
US20040015935A1 (en) Techniques for loading class files into virtual machines
US6959430B2 (en) Specialized heaps for creation of objects in object-oriented environments
US20040098712A1 (en) System and apparatus for dynamically upgrading concentrated executable computer software code
US6901591B1 (en) Frameworks for invoking methods in virtual machines
CN1295601C (zh) 进行软件应用的时间优化的替换
US6742180B1 (en) System and method providing seamless transition of operating system environment
CN100337198C (zh) 一种移动通信设备应用程序处理系统
Hall et al. XTAL: new concepts in program system design
US20030093777A1 (en) Non-intrusive gathering of code usage information to facilitate removing unused compiled code
CN1860437A (zh) 可编译计算机程序的处理
CN1169051C (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
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee