| 6151704 |
Method for optimizing a loop in a computer program by speculatively removing loads from within the loop |
| Nov-21-2000 |
A method for optimizing a loop in a computer program. The loop contains at least a first statement that uses a variable. The method includes inserting a second statement that loads the variable. The second... |
| 6139200 |
Register resource allocation feedback |
| Oct-31-2000 |
Techniques for allocating registers when generating code is described. A snapshot is generated when generating code. The snapshot contains sufficient information to restore the state of generating code... |
| 6139199 |
Fast just-in-time (JIT) scheduler |
| Oct-31-2000 |
A just-in-time (JIT) compiler typically generates code from bytecodes that have a sequence of assembly instructions forming a "template". It has been discovered that a just-in-time (JIT) compiler generates... |
| 6128775 |
Method, system, and computer program product for performing register promotion via load and store placement optimization within an optimizing compiler |
| Oct-3-2000 |
A method, system, and computer program product for performing register promotion, that optimizes placement of load and store operations of a computer program within a compiler. Based on the observation... |
| 6101326 |
Method and apparatus for frame elimination for simple procedures with tail calls |
| Aug-8-2000 |
The invention relates to a method and apparatus for stack frame elimination for simple procedures with tail calls. Subject to certain prerequisite constraints, the invention modifies the procedure by converting... |
| 6092180 |
Method for measuring latencies by randomly selected sampling of the instructions while the instruction are executed |
| Jul-18-2000 |
In a method for scheduling instructions executed in a computer system including a processor and a memory subsystem, pipeline latencies and resource utilization are measured by sampling hardware while the... |
| 6090156 |
System for local context spilling for graph coloring register allocators |
| Jul-18-2000 |
A register allocator for allocating machine registers during compilation of a computer program. The register allocator performs the steps of building an interference graph, reducing the graph using graph... |
| 6078744 |
Method and apparatus for improving compiler performance during subsequent compilations of a source program |
| Jun-20-2000 |
Apparatus, methods, and computer program products are disclosed for improving the performance of subsequent compilations of a source program. The initial compilation of the source program journals computationally... |
| 6077315 |
Compiling system and method for partially reconfigurable computing |
| Jun-20-2000 |
A compiling system and method generates a sequence of program instructions for use in a partially reconfigurable processing unit, a portion of the processing unit having a hardware organization that is... |
| 6077314 |
Method of, system for, and computer program product for providing improved code motion and code redundancy removal using extended global value numbering |
| Jun-20-2000 |
Code motion and redundancy removal based on an Extended Global Value Numbering technique which performs value numbering beyond basic blocks and extended basic blocks. Full redundancies and partial redundancies... |
| 6072952 |
Method and apparatus for coalescing variables |
| Jun-6-2000 |
A method and apparatus for improving the process of software development by a fast coalescing compiler optimizer tool that operates with one compiler pass. The present invention is a software development... |
| 6072951 |
Profile driven optimization of frequently executed paths with inlining of code fragment (one or more lines of code from a child procedure to a parent procedure) |
| Jun-6-2000 |
A compiler and method of compiling provide enhanced performance by inlining one or more frequently executed paths through a child procedure into a parent procedure without inlining the entire child procedure.... |
| 6070011 |
Compiler for performing a loop fusion, dependent upon loop peeling and/or loop reversal |
| May-30-2000 |
A compile method employs loop fusion to improve execution of a first loop and a second loop in a code sequence. A compile method initially peels one or more loop iterations from one of the loops to cause... |
| 6070009 |
Method for estimating execution rates of program execution paths |
| May-30-2000 |
A method is provided for estimating execution rates of program executions paths. The method samples path-identifying state information of selected instructions while executing the program in a processor.... |
| 6064820 |
Apparatus and method to incrementally update single static assignment (SSA) form |
| May-16-2000 |
A method and apparatus for incrementally updating SSA form after loop unrolling. The incremental SSA tool generates a non-ambiguous new name, in SSA form, for each original name defined in a loop and used... |
| 6064819 |
Control flow and memory management optimization |
| May-16-2000 |
Selected code is modeled in a polyhedral dependency graph (PDG). A placement optimizer maps each element of the PDG to an optimally placed PDG. An ordering optimizer maps the placed PDG to an optimally... |
| 6064818 |
Straight path optimization for compilers |
| May-16-2000 |
A pragma is defined to indicate straight path optimization for compilers (SPOC). The pragma is inserted into source code to identify the most common case for a branch point in a program flow, determined... |
| 6044223 |
Object code allocation in multiple systems |
| Mar-28-2000 |
This invention relates to the allocation of object code in multi-processor systems. In particular, techniques are disclosed for efficiently allocating signal processing instructions to a large array of... |
| 6035124 |
Method of, system for, and computer program product for providing extended global value numbering |
| Mar-7-2000 |
A fast and efficient way of performing extended global value numbering beyond basic blocks and extended basic blocks on a complete topological ordering of basic blocks in a program. Global value numbering... |
| 6035122 |
Compiler for converting source program into object program having instruction with commit condition |
| Mar-7-2000 |
A processing device executes an instruction speculatively, and execution result of the instruction becomes valid when all the predictions about true/false of branch condition are correct, and the instruction... |
| 6029004 |
Method and apparatus for modular reordering of portions of a computer program based on profile data |
| Feb-22-2000 |
An apparatus and method reorder portions of a computer program in a way that achieves both enhanced performance and maintainability of the computer program. A global call graph is initially constructed... |
| 6023583 |
Optimized variable allocation method, optimized variable allocation system and computer-readable memory containing an optimized variable allocation program |
| Feb-8-2000 |
An input module reads a source program, and a language translating module performs language translation on the entered source program to generate intermediate code. A dependency relation analyzing module... |
| 6021275 |
Object code structure and method for translation of architecture independent program implementations |
| Feb-1-2000 |
Endian format affects the representation of both literal data and pointer data whether represented in a global data specification (i.e., in a data section) or as immediate operand values in-line with Intercode... |
| 6014518 |
Terminating polymorphic type inference program analysis |
| Jan-11-2000 |
A terminating polymorphic type inference program analysis helps to better optimize, understand, and/or browse computer programs. The analysis represents parameter values for each function call in the program... |
| 6002879 |
Method for performing common subexpression elimination on a rack-N static single assignment language |
| Dec-14-1999 |
Briefly, in one embodiment, the invention is a method for eliminating common subexpressions in an initial SSA intermediate language representation of at least a portion of a computer program. The method... |
| 5999739 |
Method and apparatus for elimination of redundant branch instructions from a program |
| Dec-7-1999 |
The procedure of the invention eliminates redundant conditional branch statements (CBSs) from a program, wherein the program includes (i) plural blocks of program statements, (ii) a definition statement... |
| 5999736 |
Optimizing code by exploiting speculation and predication with a cost-benefit data flow analysis based on path profiling information |
| Dec-7-1999 |
A method and apparatus for optimizing execution of code is disclosed. The code is executed to generate path profiling information. At least one location is identified for relocating at least one of the... |
| 5987257 |
Metafile optimization |
| Nov-16-1999 |
The specification describes a program used to optimize journal files such as metafiles used in the Microsoft.RTM. Windows.RTM. programming environment. The program steps through instructions from the original... |
| 5978588 |
Method and apparatus for profile-based code placement using a minimum cut set of the control flow graph |
| Nov-2-1999 |
A method and apparatus placing blocks of object code by a compiler. The code placement is done optimally, using a "cut set technique" that uses the "max-flow/min-cut" principle. A preferred embodiment... |
| 5978587 |
Method for propagating source code locations into objects in a compiler |
| Nov-2-1999 |
An object-oriented apparatus in the memory of a computer system for propagating source code locations into objects in a compiler. The apparatus has three types. The first is a source object type, of which... |
| 5966534 |
Method for compiling high level programming languages into an integrated processor with reconfigurable logic |
| Oct-12-1999 |
A method is presented for automatically compiling a high level computer program down into an application specific integrated circuit coupled with a generic microprocessor. The original source code is written... |
| 5950009 |
Method and apparatus for profile-based reordering of program portions in a computer program |
| Sep-7-1999 |
An apparatus and several methods provide for a more optimized computer program that will have a faster execution time than was possible using the prior art reordering technique that adds to a trace until... |
| 5946491 |
Register allocation method and apparatus for gernerating spill code as a function of register pressure compared to dual thresholds |
| Aug-31-1999 |
A method and apparatus for minimizing spill code in regions of low register pressure determines the register pressure at various locations in the computer program. When a live range is selected for spilling,... |
| 5940622 |
Systems and methods for code replicating for optimized execution time |
| Aug-17-1999 |
An optimizer that reduces execution time of computer code and a system and method that optimizes an execution time for a sequence of instruction blocks in a processor. The optimizer includes: (1) a parsing... |
| 5937196 |
Compiling with partial copy propagation |
| Aug-10-1999 |
A compiler and method of compiling provide partial redundant copy elimination by eliminating copy statements having at least one eligible reachable use and at least one ineligible reachable use. To eliminate... |
| 5937195 |
Global control flow treatment of predicated code |
| Aug-10-1999 |
The relationships among predicates are tracked globally by uniformly treating both control flow and explicit predicates by mapping them to a single connected partition graph. This allows for the analysis... |
| 5933644 |
Method and apparatus for conflict-based block reordering |
| Aug-3-1999 |
A method and apparatus for ordering blocks of code by a compiler. The compiler generates a conflict graph in accordance with the blocks of a computer program being compiled. Once the conflict graph is... |
| 5930509 |
Method and apparatus for performing binary translation |
| Jul-27-1999 |
A computer system for executing a binary image conversion system which converts instructions from a instruction set of a first, non native computer system to a second, different, native computer system,... |
| 5923883 |
Optimization apparatus which removes transfer instructions by a global analysis of equivalence relations |
| Jul-13-1999 |
The basic block division unit 2 divides the instruction sequence into basic blocks which are sequences with a continuous execution order. The control flow analysis unit 3 analyzes the control flow between... |
| 5920723 |
Compiler with inter-modular procedure optimization |
| Jul-6-1999 |
A compiler method is adapted to be executed by a computer with limited memory, yet enables cross-CU optimization during the conversion of a source code listing to an object code listing. The compiler method... |
| 5920722 |
System and process for efficiently determining absolute memory addresses for an intermediate code model |
| Jul-6-1999 |
A system and process for efficiently determining absolute addresses for an intermediate code model of an address space are described. A processor interfaces to a main memory comprising a plurality of addressable... |
| 5920721 |
Compiler generating functionally-alike code sequences in an executable program intended for execution in different run-time environments |
| Jul-6-1999 |
A compiler-loader system enables the creation of different loaded executable images in target computers complying with different versions of an instruction-set architecture, the different images being... |
| 5905895 |
Method and system for optimizing non-native bytecodes before bytecode interpretation |
| May-18-1999 |
A method and system for optimizing Java bytecodes before bytecode interpretation within a computer system is disclosed. In accordance with the method and system of the present invention, a first bytecode... |
| 5901317 |
Method and system for register allocation using multiple interference graphs |
| May-4-1999 |
Allocation of real registers to virtual or symbolic registers represented by nodes in an interference graph is performed with a compiler using a primary interference graph and a secondary interference... |
| 5890000 |
Cooperation of global and local register allocators for better handling of procedures |
| Mar-30-1999 |
A method and device for optimizing a compiler involves cooperation between the global and local register allocators in assigning symbolic registers to hardware registers. A large procedure may have many... |
| 5857105 |
Compiler for reducing number of indirect calls in an executable code |
| Jan-5-1999 |
A compiler method converts an indirect call to a callee routine in a caller routine program listing, to an in-line listing of, or a direct call to, the callee routine in the caller routine. An indirect... |
| 5854935 |
Program transformation system for microcomputer and microcomputer employing transformed program |
| Dec-29-1998 |
An optimization compiler performs computation of hamming's distance between address of respective instruction of the temporarily arranged program string and a next execution address after temporary arrangement... |
| 5854929 |
Method of generating code for programmable processors, code generator and application thereof |
| Dec-29-1998 |
The present invention concerns a method of generating code for a programmable processor and comprises several steps. The first step is representing the processor as a directed bipartite graph with first... |
| 5850553 |
Reducing the number of executed branch instructions in a code sequence |
| Dec-15-1998 |
A compiler technique for reducing the number of executed branches in a code sequence. Multiple condition branch instructions in a program sequence are replaced with a single combined conditional branch... |
| 5850552 |
Optimization apparatus for removing hazards by arranging instruction order |
| Dec-15-1998 |
An optimization apparatus is provided for removing hazards from a program by rearranging instructions for each program segment. The apparatus comprises: a Directed Acyclic Graph (DAG) generating means... |