Method apparatus for implementing multiple return sites
    1.
    发明授权
    Method apparatus for implementing multiple return sites 失效
    用于实现多个返回站点的方法装置

    公开(公告)号:US06553426B2

    公开(公告)日:2003-04-22

    申请号:US08944326

    申请日:1997-10-06

    IPC分类号: G06F942

    CPC分类号: G06F9/4486

    摘要: Methods and apparatus for efficiently enabling an alternate return address associated with a function call to essentially be stored such that the alternate return address may be readily accessed are disclosed. According to one aspect of the present invention, a method for enabling a return address associated with a function called by a routine to be efficiently stored includes calling the function from within the routine while the routine is executing. In general, the function is external to the routine. The function, once called, begins executing. Eventually, the function returns to the routine. Specifically, the function returns to a location in the routine that is identified by an expected return point, or normal return address. The instruction in the routine that corresponds to the expected return point is a dummy instruction that executes with a low computational overhead but does not affect program execution. When the called function is to return to an alternate return point, it obtains the address by reading data embedded in the dummy instruction.

    摘要翻译: 公开了用于有效地实现与函数调用相关联的替代返回地址的方法和装置,以基本上被存储,使得可以容易地访问替代返回地址。 根据本发明的一个方面,一种用于使与由程序调用的函数相关联的返回地址能够被有效存储的方法包括在程序执行期间从该例程中调用该函数。 一般情况下,该函数在程序外部。 该函数一旦被调用,就开始执行。 最终,函数返回到例程。 具体来说,该函数返回到由预期返回点或正常返回地址标识的例程中的位置。 程序中对应于预期返回点的指令是以低计算开销执行但不影响程序执行的虚拟指令。 当被叫函数返回到交替返回点时,通过读取嵌入在虚拟指令中的数据来获取地址。

    Mixed execution stack and exception handling
    2.
    再颁专利
    Mixed execution stack and exception handling 有权
    混合执行堆栈和异常处理

    公开(公告)号:USRE39519E1

    公开(公告)日:2007-03-13

    申请号:US10884826

    申请日:2004-07-01

    IPC分类号: G06F9/40

    摘要: Systems and methods for implementing an execution stack which stores frames for functions written in multiple programming languages are provided. The frames for functions written in different programming languages may be interleaved on the same execution stack. A data block on the execution stack may be utilized to traverse the execution stack around a frame by storing a stack pointer and frame pointer to a previous frame. Additionally, exceptions may be propagated, with conversion if necessary, through frames on the execution stack that are written in different programming languages.

    摘要翻译: 提供了用于实现用于以多种编程语言编写的功能来存储帧的执行堆栈的系统和方法。 以不同编程语言编写的函数的帧可以在相同的执行堆栈上进行交织。 可以利用执行堆栈上的数据块通过将堆栈指针和帧指针存储到前一帧来遍历帧周围的执行堆栈。 另外,异常可以传播,如果需要,通过转换,通过使用不同编程语言编写的执行堆栈上的帧。

    Mixed execution stack and exception handling
    3.
    发明授权
    Mixed execution stack and exception handling 有权
    混合执行堆栈和异常处理

    公开(公告)号:US06415381B1

    公开(公告)日:2002-07-02

    申请号:US09416373

    申请日:1999-10-12

    IPC分类号: G06F940

    摘要: Systems and methods for implementing an execution stack which stores frames for functions written in multiple programming languages are provided. The frames for functions written in different programming languages may be interleaved on the same execution stack. A data block on the execution stack may be utilized to traverse the execution stack around a frame by storing a stack pointer and frame pointer to a previous frame. Additionally, exceptions may be propagated, with conversion if necessary, through frames on the execution stack that are written in different programming languages.

    摘要翻译: 提供了用于实现用于以多种编程语言编写的功能来存储帧的执行堆栈的系统和方法。 以不同编程语言编写的函数的帧可以在相同的执行堆栈上进行交织。 可以利用执行堆栈上的数据块通过将堆栈指针和帧指针存储到前一帧来遍历帧周围的执行堆栈。 另外,异常可以传播,如果需要,通过转换,通过使用不同编程语言编写的执行堆栈上的帧。

    Site specific message dispatch in object-oriented systems
    4.
    发明授权
    Site specific message dispatch in object-oriented systems 失效
    面向对象系统中的站点特定消息发送

    公开(公告)号:US06385660B2

    公开(公告)日:2002-05-07

    申请号:US08944331

    申请日:1997-10-06

    IPC分类号: G06F954

    CPC分类号: G06F9/4491

    摘要: Systems and methods for implementing site specific message dispatch in an object-oriented environment are provided. Receiver type information may be saved at a message dispatch site in order to provide site specific message dispatch. By allowing message dispatch to vary at different call sites, object-oriented systems may be more efficient and flexible.

    摘要翻译: 提供了在面向对象环境中实现站点特定消息分发的系统和方法。 接收器类型信息可以保存在消息分发站点,以便提供站点特定的消息分派。 通过允许消息分派在不同的呼叫站点变化,面向对象的系统可能更有效和灵活。

    Method and apparatus for dynamically optimizing byte-coded programs
    5.
    发明授权
    Method and apparatus for dynamically optimizing byte-coded programs 失效
    用于动态优化字节编码程序的方法和装置

    公开(公告)号:US06237141B1

    公开(公告)日:2001-05-22

    申请号:US09365706

    申请日:1999-08-02

    IPC分类号: G06F945

    CPC分类号: G06F8/48 G06F9/4552

    摘要: Methods and apparatus for dynamically determining whether portions of code should be interpreted or compiled in order to optimize a software application during run-time are disclosed. According to one aspect of the present invention, computer-implemented method for run-time processing of a computer program which includes byte-codes arranged as a plurality of methods includes invoking a first method selected from the plurality of methods. Invoking the first selected method involves interpreting the first selected method. An invocation tracker which is arranged to track the number of invocations of the first selected method is updated, and a determination is made regarding when the invocation tracker indicates that the number of invocations of the first selected method exceeds a threshold value. The first selected method is compiled when it is determined that the invocation tracker indicates that the number of invocations of the first selected method exceeds a threshold value. This threshold value is periodically adjusted to keep the compilation and the interpretation overheads within acceptable ranges.

    摘要翻译: 公开了用于动态地确定是否应该解释或编译代码部分以便在运行期间优化软件应用的方法和装置。 根据本发明的一个方面,计算机实现的包括以多个方法排列的字节码的计算机程序的运行时处理方法包括调用从多种方法中选择的第一种方法。 调用第一个选择的方法包括解释第一个选择的方法。 被配置为跟踪第一选择方法的调用次数的调用跟踪器被更新,并且确定调用跟踪器何时指示第一选定方法的调用次数超过阈值。 当确定调用跟踪器指示第一所选方法的调用次数超过阈值时,编译第一选择的方法。 周期性地调整该阈值,以将编译和解释开销保持在可接受的范围内。

    Method and apparatus for memory allocation in a multi-threaded virtual machine
    6.
    发明授权
    Method and apparatus for memory allocation in a multi-threaded virtual machine 有权
    多线程虚拟机中内存分配的方法和装置

    公开(公告)号:US06510498B1

    公开(公告)日:2003-01-21

    申请号:US09724737

    申请日:2000-11-28

    IPC分类号: G06F1200

    摘要: Methods and apparatus for the efficient allocation of shared memory in a multi-threaded computer system are disclosed. In accordance with one embodiment of the present invention, a computer-implemented method for allocating memory shared by multiple threads in a multi-threaded computing system includes partitioning the shared memory into a plurality of blocks, and grouping the multiple threads into at least a first group and a second group. A selected block is allocated to a selected thread which may attempt to allocate an object in the selected block. The allocation of the selected block to the selected thread is based at least partially upon whether the selected thread is a part of the first group or the second group. In one embodiment, grouping the multiple threads into the first group and the second group includes identifying a particular thread and determining whether the particular thread is a fast allocating thread. In such an embodiment, when the particular thread is fast allocating, the particular thread is grouped into the first group.

    摘要翻译: 公开了一种在多线程计算机系统中有效分配共享存储器的方法和装置。 根据本发明的一个实施例,一种用于在多线程计算系统中分配由多个线程共享的存储器的计算机实现的方法包括将共享存储器划分成多个块,并且将多个线程分组成至少第一 组和第二组。 所选择的块被分配给可能尝试在所选块中分配对象的所选线程。 所选择的块到所选线程的分配至少部分地基于所选择的线程是否是第一组或第二组的一部分。 在一个实施例中,将多个线程分组到第一组中,并且第二组包括识别特定线程并确定特定线程是否是快速分配线程。 在这样的实施例中,当特定线程快速分配时,特定线程被分组成第一组。

    Inline database for receiver types in object-oriented systems
    7.
    发明授权
    Inline database for receiver types in object-oriented systems 失效
    面向对象系统中接收器类型的内联数据库

    公开(公告)号:US06317796B1

    公开(公告)日:2001-11-13

    申请号:US08944332

    申请日:1997-10-06

    申请人: Lars Bak Urs Hölzle

    发明人: Lars Bak Urs Hölzle

    IPC分类号: G06F954

    CPC分类号: G06F9/4491

    摘要: Systems and methods for implementing message dispatch for an object-oriented program are provided. Receiver type information is collected at a site of a method that dispatches messages to receiver objects. The receiver type information is saved for subsequent execution of the program. By saving the receiver type information, the program may be more efficient as it is not necessary to collect the receiver type information again. Additionally, inlining information may be saved with the receiver type information.

    摘要翻译: 提供了一种用于实现面向对象程序的消息发送的系统和方法。 接收器类型信息在将消息分派给接收器对象的方法的站点处收集。 保存接收器类型信息以便随后执行程序。 通过保存接收器类型信息,程序可能更有效,因为不需要再次收集接收器类型信息。 此外,可以使用接收器类型信息来保存内联信息。

    Method and apparatus for memory allocation in a multi-threaded virtual machine
    8.
    发明授权
    Method and apparatus for memory allocation in a multi-threaded virtual machine 失效
    多线程虚拟机中内存分配的方法和装置

    公开(公告)号:US06209066B1

    公开(公告)日:2001-03-27

    申请号:US09108047

    申请日:1998-06-30

    IPC分类号: G06F1200

    摘要: Methods and apparatus for the efficient allocation of shared memory in a multi-threaded computer system are disclosed. In accordance with one embodiment of the present invention, a computer-implemented method for allocating memory shared by multiple threads in a multi-threaded computing system includes partitioning the shared memory into a plurality of blocks, and grouping the multiple threads into at least a first group and a second group. A selected block is allocated to a selected thread which may attempt to allocate an object in the selected block. The allocation of the selected block to the selected thread is based at least partially upon whether the selected thread is a part of the first group or the second group. In one embodiment, grouping the multiple threads into the first group and the second group includes identifying a particular thread and determining whether the particular thread is a fast allocating thread. In such an embodiment, when the particular thread is fast allocating, the particular thread is grouped into the first group.

    摘要翻译: 公开了一种在多线程计算机系统中有效分配共享存储器的方法和装置。 根据本发明的一个实施例,一种用于在多线程计算系统中分配由多个线程共享的存储器的计算机实现的方法包括将共享存储器划分成多个块,并且将多个线程分组成至少第一 组和第二组。 所选择的块被分配给可能尝试在所选块中分配对象的所选线程。 所选择的块到所选线程的分配至少部分地基于所选择的线程是否是第一组或第二组的一部分。 在一个实施例中,将多个线程分组到第一组中,并且第二组包括识别特定线程并确定特定线程是否是快速分配线程。 在这样的实施例中,当特定线程快速分配时,特定线程被分组成第一组。

    Method and apparatus for performing byte-code optimization during pauses
    9.
    发明授权
    Method and apparatus for performing byte-code optimization during pauses 有权
    在暂停期间执行字节码优化的方法和装置

    公开(公告)号:US06865734B2

    公开(公告)日:2005-03-08

    申请号:US09836916

    申请日:2001-04-17

    申请人: Urs Hölzle Lars Bak

    发明人: Urs Hölzle Lars Bak

    IPC分类号: G06F9/45

    摘要: Methods and apparatus for dynamically compiling byte codes associated with methods during idle periods in the execution of a computer program are disclosed. The described methods are particularly suitable for use in computer systems that are arranged to execute both interpreted and compiled byte codes. In some embodiments, methods to be dynamically compiled are referenced in one or more lists. The lists may be prioritized to facilitate the compilation of the highest priority methods first. In one embodiment, a pair of compilation lists are provided with a first one of the compilation lists being created prior to processing the computer program while the other is created during the processing of the computer program.

    摘要翻译: 公开了在执行计算机程序期间动态地编译与空闲期间中的方法相关联的字节码的方法和装置。 所描述的方法特别适用于被布置为执行解释和编译的字节码的计算机系统。 在一些实施例中,要被动态编译的方法在一个或多个列表中被引用。 可以优先列出列表以便于首先编译最高优先级的方法。 在一个实施例中,提供一对编译列表,其中编译列表中的第一个在处理计算机程序之前被创建,而另一个在计算机程序的处理期间被创建。

    Static binding of dynamically-dispatched calls in the presence of dynamic linking and loading

    公开(公告)号:US06704927B1

    公开(公告)日:2004-03-09

    申请号:US09265770

    申请日:1999-03-10

    IPC分类号: G06F945

    摘要: Techniques for performing static binding of dispatched-calls in the presence of dynamic linking and loading are provided. A method for increasing the execution performance of a function at run-time includes compiling the function, which may either be interpreted or previously compiled, and identifying a call within the function to a process. The method also includes adding dependency information to the function. The dependency information is arranged to indicate a status of the function, and contains information pertaining to the class, the name, and the signature associated with the process. In one embodiment, the process is a virtual process, and the method includes analyzing a class structure associated with the function in order to determine when the virtual process is a substantially unique target of the call. In such an embodiment, the virtual process may be inlined into the function when it is determined that the virtual process is the substantially unique target of the call.