Programmatic compiler optimization of glacial constants
    12.
    发明授权
    Programmatic compiler optimization of glacial constants 有权
    编程优化的冰川常数

    公开(公告)号:US07840950B2

    公开(公告)日:2010-11-23

    申请号:US11371724

    申请日:2006-03-09

    IPC分类号: G06F9/45

    CPC分类号: G06F9/45516

    摘要: Optimizations are programmatically applied by a compiler (preferably, a just-in-time or “JIT” compiler), and enable achieving improved performance while a variable acts as a global constant, yet also allow code to execute correctly if the global constant's run-time value changes from the value on which the optimization was originally based. Code snippets that dynamically patch executable code are described, where these code snippets take corrective actions to enable correct program execution following a run-time change to the value of a glacial constant. A backup recovery path may also be maintained, where this path provides code that is executed in the event of a change to a glacial constant and that treats the glacial constant as a variable. Recompilation may also be used after a change to a glacial constant, where the originally-compiled code has made an assumption about the glacial constant's value that is no longer accurate. Combinations of these approaches may be used.

    摘要翻译: 优化由编译器(最好是即时或“JIT”编译器)以编程方式应用,并且当变量充当全局常量时,可以实现改进的性能,而且如果全局常量的运行 - 时间值从优化最初所基于的值变化。 描述了动态修补可执行代码的代码片段,其中这些代码段采取纠正措施,以便在运行时更改为冰川常数的值后启用正确的程序执行。 还可以维护备份恢复路径,其中该路径提供在对冰川常数变化的情况下执行的代码,并且将冰川常数作为变量来处理。 重新编译也可以在更改为冰川常数之后使用,其中原始编译的代码已经对不再准确的冰川常数的值作出假设。 可以使用这些方法的组合。

    COMBINING STATIC AND DYNAMIC COMPILATION TO REMOVE DELINQUENT LOADS
    13.
    发明申请
    COMBINING STATIC AND DYNAMIC COMPILATION TO REMOVE DELINQUENT LOADS 有权
    组合静态和动态编译去除负载

    公开(公告)号:US20090249316A1

    公开(公告)日:2009-10-01

    申请号:US12058172

    申请日:2008-03-28

    IPC分类号: G06F9/45

    CPC分类号: G06F8/4442 G06F12/0862

    摘要: A method for combined static and dynamic compilation of program code to remove delinquent loads can include statically compiling source code into executable code with instrumented sections each being suspected of including a delinquent load, and also into a separate intermediate language representation with annotated portions each corresponding to one of the instrumented sections. The method also can include executing the instrumented sections repeatedly and monitoring cache misses for each execution. Finally, the method can include dynamically recompiling selected ones of the instrumented sections using corresponding ones of the annotated portions of the separate intermediate language representation only after a threshold number of executions of the selected ones of the instrumented sections, each recompilation include a pre-fetch directive at a pre-fetch distances tuned to avoid the delinquent load.

    摘要翻译: 用于组合静态和动态编译程序代码以消除违规负载的方法可以包括将源代码静态编译成可执行代码,其中每个都被怀疑包括拖欠负载的检测部分,以及分别具有注释部分的单独的中间语言表示 其中一个仪器部分。 该方法还可以包括重复执行检测的部分,并监视每次执行的高速缓存未命中。 最后,该方法可以包括仅在所选择的被检测部分的阈值数量执行之后,使用单独的中间语言表示的对应注释部分中的对应的部分动态重新编译所选择的部分部分,每次重新编译包括预取 指令以预取距离进行调整,以避免拖欠负荷。

    METHOD FOR EMBEDDING SHORT RARE CODE SEQUENCES IN HOT CODE WITHOUT BRANCH-AROUNDS
    14.
    发明申请
    METHOD FOR EMBEDDING SHORT RARE CODE SEQUENCES IN HOT CODE WITHOUT BRANCH-AROUNDS 审中-公开
    在没有分支机构的情况下嵌入短暂的代码序列的方法

    公开(公告)号:US20080184019A1

    公开(公告)日:2008-07-31

    申请号:US11668755

    申请日:2007-01-30

    IPC分类号: G06F9/30

    摘要: The problem of handling exceptionally executed code portions is improved through the practice of embedding handling instructions within other instructions, such as within their “immediate” fields. Such instructions are chosen to have short execution times. Most of the time these instructions are executed quickly without having to include jumps around them. Only rarely are the other portions of these specialized computer instruction needed or used.

    摘要翻译: 通过在其“直接”字段内的其他指令中嵌入处理指令的做法,改进了处理异常执行的代码部分的问题。 选择这样的指令具有较短的执行时间。 大多数情况下,这些指令都能快速执行,而不必在其周围包括跳转。 这些专门的计算机指令的其他部分很少需要或使用。

    METHOD AND SYSTEM TO IMPROVE CODE IN VIRTUAL MACHINES
    15.
    发明申请
    METHOD AND SYSTEM TO IMPROVE CODE IN VIRTUAL MACHINES 有权
    在虚拟机中改进代码的方法和系统

    公开(公告)号:US20100192137A1

    公开(公告)日:2010-07-29

    申请号:US12358564

    申请日:2009-01-23

    IPC分类号: G06F9/45

    摘要: A computer readable storage medium is provided having executable instructions stored thereon for executing a method of operating a computing system, in which an inner virtual machine translates first instructions, which are supported by the inner virtual machine, into second instructions, which are supported by an outer virtual machine. The method includes encoding, in the inner virtual machine, third instructions into the second instructions into which the first instructions are translated, the third instructions including hints for facilitating an execution of the second instructions, and, in an event the hints are supported by the outer virtual machine, initiating the execution of the second instructions while utilizing the hints by the outer virtual machine to achieve an increased efficiency of the execution of the second instructions.

    摘要翻译: 提供了一种计算机可读存储介质,其具有存储在其上的可执行指令,用于执行操作计算系统的方法,其中内部虚拟机将由内部虚拟机支持的第一指令转换为第二指令,第二指令由 外部虚拟机。 所述方法包括在所述内部虚拟机中对所述第一指令进行转换的第二指令进行编码,所述第三指令包括用于促进所述第二指令的执行的提示,以及在所述提示由所述第一指令支持的情况下, 外部虚拟机,在外部虚拟机利用提示的同时启动第二指令的执行,以实现提高执行第二指令的效率。

    Efficient locking for thread-safe self-modifying code
    16.
    发明授权
    Efficient locking for thread-safe self-modifying code 失效
    线程安全自修改代码的高效锁定

    公开(公告)号:US07185337B2

    公开(公告)日:2007-02-27

    申请号:US09867362

    申请日:2001-05-29

    摘要: A locking mechanism for use in a multi-thread environment supporting self-modifying code in which modifications to the code are made at runtime. The locking mechanism having associated helper code accessed by a call from the first instruction address in the code block. The helper code calculating the binary encoding for the call instruction and using an atomic compare and exchange instruction to compare the calculated binary encoding with the actual contents of the first instruction address. Where there is a match, a self loop instruction is written to the first instruction address to lock the specified code block for subsequent threads. The helper code contains instructions to resolve the references in the specified block. The last such instruction is an atomic store operation to replace the self loop instruction at the first instruction address with the appropriate modified instruction.

    摘要翻译: 用于支持自修改代码的多线程环境中的锁定机制,其中在运行时对代码进行修改。 该锁定机构具有通过来自代码块中的第一指令地址的调用访问的相关联的辅助代码。 帮助代码计算调用指令的二进制编码,并使用原子比较和交换指令将计算的二进制编码与第一指令地址的实际内容进行比较。 在匹配的地方,自循环指令被写入第一指令地址,以锁定后续线程的指定代码块。 助手代码包含解释指定块中引用的指令。 最后一个这样的指令是用适当的修改指令来替换第一指令地址处的自循环指令的原子存储操作。

    Compiler generation of instruction sequences for unresolved storage references
    17.
    发明授权
    Compiler generation of instruction sequences for unresolved storage references 失效
    编译器生成未解析的存储引用的指令序列

    公开(公告)号:US06813764B2

    公开(公告)日:2004-11-02

    申请号:US09870206

    申请日:2001-05-29

    申请人: Kevin A. Stoodley

    发明人: Kevin A. Stoodley

    IPC分类号: G08F945

    CPC分类号: G06F9/44521 G06F9/45504

    摘要: A compiler component for the generation of an optimal instruction sequence, the sequence including a compile-time unresolved reference to be resolved at runtime. The compiler generating a snippet list with entries corresponding to snippets defined for instructions including unresolved compile-time references. A runtime helper routine being defined for resolving references at runtime. For each instruction with an unresolved reference, generating a snippet including data for identifying the reference and for permitting resolution of the reference at runtime by the runtime helper routine. The snippet also including a copy of the instruction containing the unresolved reference. The location in the compiled code for the unresolved instruction being written with a call instruction to the snippet. The runtime helper being invoked by the snippet at runtime to resolve the references and to copy the unresolved code copy to the compiled code, with the references resolved.

    摘要翻译: 用于生成最优指令序列的编译器组件,该序列包括在运行时要解析的编译时未解析引用。 生成一个片段列表,其中的条目对应于为包含未解析的编译时引用的指令定义的片段。 定义用于在运行时解析引用的运行时帮助程序。 对于每个具有未解析引用的指令,生成一个片段,其中包括用于标识引用的数据,并允许运行时辅助程序在运行时解析引用。 该片段还包含包含未解析引用的指令的副本。 未解决的指令的编译代码中的位置被写入到代码段的调用指令。 在运行时由代码段调用运行时帮助程序来解析引用,并将未解析的代码副本复制到已编译的代码中,并解析参考。

    Method and procedure call mechanism for calling 16-bit functions from
32-bit functions
    18.
    发明授权
    Method and procedure call mechanism for calling 16-bit functions from 32-bit functions 失效
    从32位函数调用16位函数的方法和过程调用机制

    公开(公告)号:US5487158A

    公开(公告)日:1996-01-23

    申请号:US301280

    申请日:1994-09-06

    IPC分类号: G06F9/40 G06F9/46

    摘要: In the field of mixed 16-bit and 32-bit code, a method and mechanism are provided to implement alterations in the dynamic portion of memory containing the data objects used by code in the 32-bit environment so that such data is accessible to code from the 16-bit environment. Once the data objects in the stack are accesible to the 16-bit code, a function in the 32-bit code can successfully call a function in 16-bit code.

    摘要翻译: 在混合16位和32位代码领域,提供了一种方法和机制来实现包含32位环境中的代码所使用的数据对象的存储器的动态部分的变化,以便这些数据可以被代码 从16位环境。 一旦堆栈中的数据对象可以访问16位代码,32位代码中的一个功能可以成功地调用16位代码中的一个函数。