Simulation-based code duplication
    21.
    发明授权

    公开(公告)号:US10732946B2

    公开(公告)日:2020-08-04

    申请号:US16413807

    申请日:2019-05-16

    Abstract: A method for analyzing a program may include generating an initial control flow graph (CFG) for the program, identifying merge blocks of the initial CFG, identifying predecessor-merge pairs based on identifying predecessor blocks for each merge block, simulating a duplication of each predecessor-merge pair, determining whether the duplication satisfies a precondition of each of a collection of optimizations, applying, in response to satisfying the precondition, the optimization to the duplication, and generating a simulation result for the predecessor-merge pair corresponding to the duplication. The simulation result may include the optimization and a benefit of applying the optimization to the duplication. The method may further include duplicating, in the initial CFG, a predecessor-merge pair based on the simulation result corresponding to the predecessor-merge pair.

    ENHANCING PROGRAM EXECUTION USING OPTIMIZATION-DRIVEN INLINING

    公开(公告)号:US20190278576A1

    公开(公告)日:2019-09-12

    申请号:US16283429

    申请日:2019-02-22

    Abstract: Optimizing program execution includes performing, to obtain an expanded call graph, an expansion of an initial call graph. The expanded call graph includes nodes. The initial call graph is defined for a program that includes a root method and a child method. The method may further include calculating a cost value and a benefit value for inlining the child method, calculating an inlining priority value as a function of the cost value and the benefit value, and inlining, based on analyzing the expanded call graph and comparing the inlining priority value to a dynamic threshold, the child method into the root method. The child method may correspond to a node in the expanded call graph.

    Eager and optimistic evaluation of promises

    公开(公告)号:US09836288B2

    公开(公告)日:2017-12-05

    申请号:US14690592

    申请日:2015-04-20

    CPC classification number: G06F8/443 G06F8/41 G06F8/4441 G06F8/53

    Abstract: The invention relates to a method for generating executable code from application source code. The method steps include determining a programmatic expression using the application source code and determining a first value for the programmatic expression. The method steps further include compiling the programmatic expression into a first optimized code portion using the first value, an assumption, and an expression scope. The method steps further include executing the application source code. The method steps further include determining that the programmatic expression is modified outside of the expression scope, invalidating the assumption, and de-optimizing the first optimized code portion.

    MECHANISM FOR INCREASING THE PERFORMANCE OF MULTIPLE LANGUAGE PROGRAMS BY INSERTING CALLED LANGUAGE IR INTO THE CALLING LANGUAGE
    25.
    发明申请
    MECHANISM FOR INCREASING THE PERFORMANCE OF MULTIPLE LANGUAGE PROGRAMS BY INSERTING CALLED LANGUAGE IR INTO THE CALLING LANGUAGE 有权
    通过将呼叫语言IR插入呼叫语言来增加多种语言程序的性能的机制

    公开(公告)号:US20170046137A1

    公开(公告)日:2017-02-16

    申请号:US14822489

    申请日:2015-08-10

    CPC classification number: G06F8/41 G06F8/51

    Abstract: A method and system of cross-language inlining that includes receiving source code of a multiple language program, the source code including a main language and a first access of a first foreign object in a first additional language; translating the main language to obtain a main language intermediate representation (IR); translating the first additional language to obtain a first IR snippet; composing, before performing a compilation, the main language IR and the first IR snippet to obtain a cross-language IR; and performing the compilation of the cross-language IR to obtain machine code corresponding to the multiple language program.

    Abstract translation: 一种跨语言内联的方法和系统,包括接收多语言程序的源代码,所述源代码包括第一附加语言中的主要语言和第一外来物体的第一访问; 翻译主要语言以获得主要语言中间表示(IR); 翻译第一个附加语言以获得第一个IR代码段; 在编译之前编写主要语言IR和第一个IR代码段以获得跨语言IR; 并执行跨语言IR的编译以获得对应于多语言程序的机器代码。

    Changing de-optimization guard representation during the compilation process
    26.
    发明授权
    Changing de-optimization guard representation during the compilation process 有权
    在编译过程中更改去优化保护代表

    公开(公告)号:US09569185B2

    公开(公告)日:2017-02-14

    申请号:US14175776

    申请日:2014-02-07

    CPC classification number: G06F8/443 G06F8/54

    Abstract: A method for compiling code includes receiving a code section representation including a guard at a location, placing, at the guard, a triggering condition, and relocating the guard from the location to a second location in the code section representation. The method also includes transforming the guard into a control-split instruction. The control-split instruction includes a deoptimization branch and a continue execution branch. The method further includes placing, at the guard, a deoptimization instruction, and selecting a symbolic frame state linked to a side-effecting instruction. The side-effecting instruction is the last side-effecting instruction before the control-split instruction. The method also includes linking the deoptimization instruction with the symbolic frame state based on the symbolic frame state being linked to the side-effecting instruction, unlinking the symbolic frame state from the side-effecting instruction, and storing the code section representation.

    Abstract translation: 一种用于编译代码的方法包括:在代码段表示中接收包括在位置处的保护的代码段表示,在所述保护处放置触发条件,以及将所述保护从所述位置重新定位到第二位置。 该方法还包括将防卫变换为控制分离指令。 控制分离指令包括去优化分支和继续执行分支。 所述方法还包括在所述保护装置处放置去优化指令,以及选择链接到副作用指令的符号帧状态。 副作用指令是控制分离指令之前的最后一个副作用指令。 该方法还包括:基于与副作用指令链接的符号帧状态,将去最优化指令与符号帧状态相链接,将符号帧状态与副作用指令相链接,并存储代码段表示。

    METHOD AND SYSTEM FOR PARALLEL PROGRAM EXECUTION
    27.
    发明申请
    METHOD AND SYSTEM FOR PARALLEL PROGRAM EXECUTION 有权
    并行程序执行方法与系统

    公开(公告)号:US20150081988A1

    公开(公告)日:2015-03-19

    申请号:US14170506

    申请日:2014-01-31

    CPC classification number: G06F9/467 G06F9/38

    Abstract: A method for executing a program in parallel includes creating a program replica, which includes a write operation on and an identifier of an object and is a copy of the program, for a thread. The identifier specifies whether the object is thread-local. The method includes modifying the write operation based on a speculation that the write operation uses only thread-local objects. The write operation executes in a transaction of the thread. The method includes determining, while executing the program replica and using the identifier, that the object used by the write operation is not thread-local, de-optimizing the write operation by adding instrumentation to implement a software transactional memory (STM) system for the write operation to obtain a de-optimized write operation, and performing the de-optimized write operation on the object to obtain a result and store the result in a redo log.

    Abstract translation: 一种用于并行执行程序的方法包括:创建一个程序副本,该程序副本包括对一个对象的写操作和一个对象的标识符,并且是该程序的副本。 该标识符指定对象是线程本地的。 该方法包括基于写入操作仅使用线程本地对象的推测来修改写入操作。 写操作在线程的事务中执行。 该方法包括在执行程序副本并使用标识符时,确定由写入操作使用的对象不是线程本地的,通过添加仪器来对写入操作进行优化以实现软件事务存储器(STM)系统 写入操作以获得去优化的写入操作,并且对对象执行去优化的写入操作以获得结果并将结果存储在重做日志中。

    SELF-OPTIMIZING INTERPRETER AND SNAPSHOT COMPILATION
    28.
    发明申请
    SELF-OPTIMIZING INTERPRETER AND SNAPSHOT COMPILATION 有权
    自我优化解释器和快照编译

    公开(公告)号:US20140189661A1

    公开(公告)日:2014-07-03

    申请号:US13731698

    申请日:2012-12-31

    CPC classification number: G06F9/45508 G06F8/41 G06F8/433 G06F8/443 G06F9/4552

    Abstract: A method for a compiler includes receiving, by the compiler and from an interpreter, a representation of a code section having a control path that changes the representation. The representation has profiling data, and the profiling data has a threshold. The method further includes performing, by the compiler and based on the threshold, a partial evaluation of the interpreter executing the representation, compiling, by the compiler, a machine code of the representation, with the control path replaced by a deoptimization point during the compilation of the machine code, triggering the deoptimization point during execution of the machine code, and returning execution to the interpreter based on the triggering.

    Abstract translation: 一种用于编译器的方法包括由编译器和解释器接收具有改变表示的控制路径的代码段的表示。 该表示具有分析数据,并且分析数据具有​​阈值。 该方法进一步包括由编译器和基于阈值执行执行该表示的解释器的部分评估,由编译器编译表示的机器代码,在编译期间将控制路径替换为去优化点 的机器代码,在执行机器代码期间触发去优化点,并且基于触发将执行返回到解释器。

Patent Agency Ranking