Patent classifications
G06F8/48
Dynamic procedures for software products
There is provided a method for changing the functionality of an executing software product in runtime through the use of dynamic procedures. There is further provided a corresponding computerized system, computer program and non-volatile data carrier containing the computer program.
Method of compiling a program
In a method of compiling an updated program having a plurality of updated functions that is updated from an original program having a plurality of original functions, it is determined whether a first original function corresponding to a first updated function exists, it is determined whether the first updated function is changed from the first original function, a first optimization combination for the first updated function is searched when the first original function does not exist or when the first updated function is changed from the first original function, a second optimization combination applied to the first original function is read from a configuration database storing optimization combinations for the original functions when the first original function exists and the first updated function is not changed from the first original function, and the updated program is compiled using the first optimization combination or the second optimization combination.
Compilation optimization via dynamic server cloning
Various embodiments of systems and methods to optimize compilation in distributed software projects via dynamic server cloning are described herein. The described techniques include receiving a compilation request comprising an update of a software product of a distributed software development project. Further, in one aspect, a server node clone is instantiated, e.g., from a resource pool, based on a server template. The server template corresponds to a latest successful compilation of the software product. In another aspect, the update of the software product is incrementally applied on the latest compilation at the server node clone. Once the update of the software product at the server node clone is confirmed as successful, the server template is updated to the build of the software product at the server node clone. The server node clone is subsequently released to the resource pool to free up the consumed resources.
COMPILATION OPTIMIZATION VIA DYNAMIC SERVER CLONING
Various embodiments of systems and methods to optimize compilation in distributed software projects via dynamic server cloning are described herein. The described techniques include receiving a compilation request comprising an update of a software product of a distributed software development project. Further, in one aspect, a server node clone is instantiated, e.g., from a resource pool, based on a server template. The server template corresponds to a latest successful compilation of the software product. In another aspect, the update of the software product is incrementally applied on the latest compilation at the server node clone. Once the update of the software product at the server node clone is confirmed as successful, the server template is updated to the build of the software product at the server node clone. The server node clone is subsequently released to the resource pool to free up the consumed resources.
COMPILER CACHING BASED ON SEMANTIC STRUCTURE
Methods, systems, and apparatus, including computer programs encoded on computer storage media, for how a build system uses import graphs to maintain a current compilation cache and determine when compilation targets should be recompiled. A request is received to compile a compilation target. A plurality of files are identified that are used to build the compilation target. An import graph that represents import dependencies among the files used the build the compilation target is generated for the compilation target. The import graph is traversed to assign a respective identifier to each node in the import graph. A cache key is generated from data representing import relationships represented by the import graph and data representing contents of files used to build the compilation target. If the cache key is invalid or does not exist, compiling the compilation target.
PERFORMING A COMPILER OPTIMIZATION PASS AS A TRANSACTION
Embodiments described herein provide a solution for optimizing a compiling of program code. A proposed state pointer, which corresponds to a current state pointer to a current state node that represents a section of the program code, is added in an intermediate language (IL) representation of the program code. When the optimizing compiler determines that an optimization should be made to a section of code, the current state node is copied to create a proposed state node, which is then referenced by the proposed state pointer. The proposed state node is edited to include the optimization while the current state node remains unchanged. The success of the optimization is evaluated, and an updated IL representation is generated in which any references to nodes that are no longer included in the flow of the former IL representation are removed.
PROGRAM COMPILER AND LINKER, AND METHOD
Methods and apparatus include: obtaining a source code element from source code, obtaining compiler options for compilation of the source code element, applying a hash function to data representing the source code element and compiler options to generate a first hash value specific to the combination of the source code element and compiler options, and searching a repository for the first hash value. If the first hash value is not found in the repository, generating an object code fragment from the source code element using the compiler options, and storing the generated object code fragment and first hash value in association with each other in the repository. If the first hash value is found in the repository, not generating an object code fragment from the source code element; generating a list identifying one or more object code fragments in the repository that when suitably combined form object code for the source code, receiving at a linker data identifying one or more object code fragments, the object code fragments each corresponding to a source code element compiled according to respective compiler options, accessing the or each identified object code fragment from a repository of object code fragments, and commencing a memory layout mapping of object code fragments to addresses.
SYSTEM AND METHOD FOR STORE FUSION
Described herein is a system and method for store fusion that fuses small store operations into fewer, larger store operations. The system detects that a pair of adjacent operations are consecutive store operations, where the adjacent micro-operations refers to micro-operations flowing through adjacent dispatch slots and the consecutive store micro-operations refers to both of the adjacent micro-operations being store micro-operations. The consecutive store operations are then reviewed to determine if the data sizes are the same and if the store operation addresses are consecutive. The two store operations are then fused together to form one store operation with twice the data size and one store data HI operation.
Fast operating system configuration option space exploration via cross-OS grafting
A method searches and tests for performance optima in an operating system (OS) configuration space. The method includes generating a plurality of OS configurations. For at least a first OS configuration, of the generated OS configurations, the method further includes: fetching a plurality of OS modules based on the first OS configuration; building a first OS image from the fetched OS modules; and testing the first OS image to determine a first value of a performance metric.
Performing a compiler optimization pass as a transaction
Embodiments described herein provide a solution for optimizing a compiling of program code. A proposed state pointer, which corresponds to a current state pointer to a current state node that represents a section of the program code, is added in an intermediate language (IL) representation of the program code. When the optimizing compiler determines that an optimization should be made to a section of code, the current state node is copied to create a proposed state node, which is then referenced by the proposed state pointer. The proposed state node is edited to include the optimization while the current state node remains unchanged. The success of the optimization is evaluated, and an updated IL representation is generated in which any references to nodes that are no longer included in the flow of the former IL representation are removed.