Class / Patent application number | Description | Number of patent applications / Date published |
717152000 | Static (source or intermediate level) | 26 |
20090187896 | COMPILER DEVICE, PROGRAM, AND RECORDING MEDIUM - Compiler device for optimizing program which manipulates a character string includes append instruction detection unit, store code generation unit, and append code generation unit. The append instruction detection unit detects an append instruction which appends a character string to a string variable for storing a character string, in the program. The store code generation unit generates, a substitute for each of a plurality of the append instructions detected by the append instruction detection unit, a store code for storing data of an appendant character string to be appended to the string variable by the append instruction into a buffer. The append instructions append the character strings to the same string variable. The append code generation unit generates append code for appending a plurality of the appendant character strings to the string variable, at a position executed before an instruction to refer to the string variable in the program. | 07-23-2009 |
20090254893 | COMPILER OPTIMIZED FUNCTION VARIANTS FOR USE WHEN RETURN CODES ARE IGNORED - A mechanism and functionality are provided for generating and using compiler optimized function variants. These variants may be used, for example, in situations where return values of functions called by code are not thereafter used by the code calling the functions. In particular, for a function called by computer code, at least two variants for the function may be generated. A function call, for calling the function, within original computer code may be analyzed to determine which variant of the at least two variants to use for the function call. The function call may be modified in the original computer code, to generate modified computer code, based on results of the analysis identifying which variant of the at least two variants to use for the function call. | 10-08-2009 |
20100306754 | CODE PARTITIONING FOR ENHANCED PERFORMANCE - A method and system for enhancing the execution performance of program code. An analysis of the program code is used to generate code usage information for each code module. For each module, the code usage information is used to determine whether the code module should be separated from its original module container. If so, the code module is migrated to a new module container, and the code module in the original module container is replaced with a reference to the code module in the new module container. | 12-02-2010 |
20110078671 | OPTIMIZATION OF META-TEMPLATE INSTANTIATIONS - An illustrative embodiment provides a computer-implemented method for an alternate type system for optimizing the evaluation and use of meta-template instantiations. The computer-implemented method obtains a source code, instantiates an element of the source code to form an instantiated element and identifies a meta-template within the instantiated element to form an identified meta-template. The computer-implemented method creates an entry for the identified meta-template in a first data structure, wherein the entry comprises a set of mapped entries, creates an associated entry in a second data structure linked to the entry comprising the set of mapped entries, wherein the associated entry represents the set of mapped entries, and uses the associated entry of the second data structure in combination with the entry of the first data structure. | 03-31-2011 |
20110161945 | Minimizing Register Spills by Using Register Moves - A system and method for minimizing register spills during compilation. A compiler reallocates spilled variables from stack memory to other available registers. Although a corresponding register file may not have available registers for storage, the compiler identifies available registers in other locations for storage. The compiler identifies available registers in an alternate register file, wherein the alternate register file may be a floating-point register file which is then used for spilled integer variables. Other instruction type combinations between spilled variables and alternate register files are possible. When an available register within the alternate register file is identified, the compiler modifies the program instructions to allocate the corresponding spilled variable to the available register. | 06-30-2011 |
20120030660 | Mechanism for Replacing Memory pointers with Implicit Pointers to be Used in Compiler-Generated Debug Output - A mechanism for replacing memory pointers with implicit pointers is disclosed. A method of embodiments of the invention includes determining a memory pointer in a source code compiling on a computer system. The memory pointer is associated with a first value in the source code and serves as a referencing link to a second value in memory. The method further includes replacing the memory pointer with an implicit pointer as the memory pointer is optimized away during code optimization of the source code such that the implicit pointer is provided in a compiler-generated debug output to serve as an implicit reference link between the first value and second value. The implicit reference link was once provided as an explicit reference link by the memory pointer before getting optimized away. | 02-02-2012 |
20120185835 | Static Resource Processing - One embodiment constructs a graph comprising one or more parameter nodes and one or more transformation nodes, wherein: each parameter node represents one or more parameters; and each transformation node represents one or more transformations; and sequentially applies from a lowest level to a highest level of the graph, the one or more parameters represented by each parameter node and the one or more transformations represented by each transformation node to a static resource to determine one or more versions of the static resource. | 07-19-2012 |
20120254846 | System and Method for Optimizing a Code Section by Forcing a Code Section to be Executed Atomically - Systems and methods for optimizing code may use transactional memory to optimize one code section by forcing another code section to execute atomically. Application source code may be analyzed to identify instructions in one code section that only need to be executed if there exists the possibility that another code section (e.g., a critical section) could be partially executed or that its results could be affected by interference. In response to identifying such instructions, alternate code may be generated that forces the critical section to be executed as an atomic transaction, e.g., using best-effort hardware transactional memory. This alternate code may replace the original code or may be included in an alternate execution path that can be conditionally selected for execution at runtime. The alternate code may elide the identified instructions (which are rendered unnecessary by the transaction) by removing them, or by including them in the alternate execution path. | 10-04-2012 |
20130067445 | Determination of Function Purity for Memoization - The purity of a function may be determined after examining the performance history of a function and analyzing the conditions under which the function behaves as pure. In some cases, a function may be classified as pure when any side effects are de minimis or are otherwise considered trivial. A control flow graph may also be traversed to identify conditions in which a side effect may occur as well as to classify the side effects as trivial or non-trivial. The function purity may be used to identify functions for memoization. In some embodiments, the purity analysis may be performed by a remote server and communicated to a client device, where the client device may memoize the function. | 03-14-2013 |
20130074056 | Memoizing with Read Only Side Effects - A function may be memoized when a side effect is a read only side effect. Provided that the read only side effect does not mutate a memory object, the side effect may be considered as an input to a function for purity and memoization analysis. When a read only side effect may be encountered during memoization analysis, the read only side effect may be treated as an input to a function for memoization analysis. In some cases, such side effects may enable an impure function to behave as a pure function for the purposes of memoization. | 03-21-2013 |
20130074057 | Selecting Functions for Memoization Analysis - A function may be selected for memoization when the function indicates that memoization may result in a performance improvement. Impure functions may be identified and ranked based on operational data, which may include length of execution. A function may be selected from a ranked list and analyzed for memoization. The memoization analysis may include side effect analysis and consistency analysis. In some cases, the optimization process may perform optimization on one function at a time so as to not overburden a running system. | 03-21-2013 |
20130185705 | PROVIDING PERFORMANCE TUNED VERSIONS OF COMPILED CODE TO A CPU IN A SYSTEM OF HETEROGENEOUS CORES - A compiler may optimize source code and any referenced libraries to execute on a plurality of different processor architecture implementations. For example, if a compute node has three different types of processors with three different architecture implementations, the compiler may compile the source code and generate three versions of object code where each version is optimized for one of the three different processor types. After compiling the source code, the resultant executable code may contain the necessary information for selecting between the three versions. For example, when a program loader assigns the executable code to the processor, the system determines the processor's type and ensures only the optimized version that corresponds to that type is executed. Thus, the operating system is free to assign the executable code to any of the different types of processors. | 07-18-2013 |
20140380289 | PLATFORM SPECIFIC OPTIMIZATIONS IN STATIC COMPILERS - Embodiments include systems and methods for generating an application code binary that exploits new platform-specific capabilities, while maintaining backward compatibility with other older platforms. For example, application code is profiled to determine which code regions are main contributors to the runtime execution of the application. For each hot code region, a determination is made as to whether multiple versions of the hot code region should be produced for different target platform models. Each hot code region can be analyzed to determine if benefits can be achieved by exploiting platform-specific capabilities corresponding to each of N platform models, which can result in between one and N versions of that particular hot code region. Navigation instructions are generated as part of the application code binary to permit a target machine to select appropriate versions of the hot code sections at load time, according to the target machine's capabilities. | 12-25-2014 |
20150046911 | RE-FACTOR CODE TO USE METHOD CHAINING WITH OPTIMIZER TOOL - Optimizing compiled code includes finding a portion of the compiled code arising from method calls in a portion of source code that were not chained method calls. Modified code is produced for the portion of the compiled code, wherein the modified code conforms to compiled code that would have arisen from source code having chained calls equivalent to the method calls that were not chained in the portion of the source code. | 02-12-2015 |
20150046912 | Method for Controlling Inlining in a Code Generator - The various aspects leverage the novel observation that the number of call sites in code is directly correlated with the code's compile time and provide methods implemented by a compiler operating on a computing device (e.g., a smartphone) for performing inline throttling based on a projected number of call sites in the code that would exist after performing inline expansion. The various aspects enable the compiler to improve the performance of the generated code by aggressive inlining while carefully managing increases in compile time, thereby decreasing the power required to compile the code while increasing performance of the computing device. Thus, by inlining enough call sites to reduce the costs of handling calls while accounting for the costs of inlining, the various aspects provide for an effective balance of short compile times and effective code performance. | 02-12-2015 |
20150046913 | DATA SPLITTING FOR MULTI-INSTANTIATED OBJECTS - Embodiments relate to data splitting for multi-instantiated objects. An aspect includes receiving a portion of source code for compilation having a dynamic object to split using object size array data splitting. Another aspect includes replacing all memory allocations for the dynamic object with a total size of an object size array and object field arrays including a predetermined padding. Another aspect includes inserting statements in the source code after the memory allocations to populate the object size array with a value of a number of elements of the object size array. Another aspect includes updating a stride for load and store operations using dynamic pointers. Yet another aspect includes modifying field references by adding a distance between the object size array and the object field array to respective address operations. | 02-12-2015 |
20150052507 | COMPILING OPTIMIZATION OF AN APPLICATION AND COMPILER THEREOF - One aspect is a method for compiling optimization of an application and a compiler thereof. The method includes determining could-be-constant variables in source code of the application. Constant variables designated as final constant variables and values of the constant variables are obtained using the could-be-constant variables. The application is compiled using the constant variables and the values of the constant variables. | 02-19-2015 |
20150331683 | Automatic Selection Of An Abstract Data Type - An implementation of an abstract data type is automatically selected by a compiler. The compiler chooses an implementation for each instance of an abstract data type in a program based on operations performed in the instance within the program. | 11-19-2015 |
20150347163 | EXTRACTING SOURCE CODE - Methods, systems, and apparatus, including computer programs encoded on computer storage media, for extracting source code. One of the methods includes receiving, by a newly created process, a request to execute code of an executable file in the newly created process, wherein the request specifies a parameter. The newly created process loads a process interception library. Library initialization code of the process interception library determines whether the parameter should be intercepted. In response to determining that the parameter should be intercepted, the parameter is provided to another process. | 12-03-2015 |
20150378698 | INTEGRATED COMPILATION MODES FOR DATA FLOW CODE GENERATION - Aspects of the present invention provide a solution for compiling data in a plurality of modes. In an embodiment, at least one optimal mode is specified for each of a set of program language constructs and each of a set of language primitives in a first language. A set of optimal mode code is generated in the at least one mode in a second language. A set of bridge code is generated. A set of additional mode code is generated in a plurality of other modes in the second language, wherein the generating utilizes the bridge code. The generated optimal mode code and additional mode code is compiled. | 12-31-2015 |
20160062751 | METHOD AND APPARATUS FOR OPTIMISING COMPUTER PROGRAM CODE - A method and apparatus for optimising computer program code. The method comprises identifying at least one set of candidate instructions within the computer program code, each candidate instruction comprising an instruction for writing a constant value to memory and the at least one set comprising a plurality of candidate instructions. The method further comprises computing an aggregate constant value for the at least one set of candidate instructions, and replacing the at least one set of candidate instructions with at least one instruction for writing the aggregate constant value to memory. | 03-03-2016 |
20160117154 | AUTOMATED SOFTWARE INCLUDE GRAPH AND BUILD ENVIRONMENT ANALYSIS AND OPTIMIZATION IN COMPILED LANGUAGE - Exemplary methods for optimizing a source code base includes generating a dependencies database for a source code base comprising of a plurality of source files, wherein one or more of the plurality of source files comprises a hierarchy of include files, wherein the dependencies database includes dependencies information for each source file and include file, wherein the dependencies information identifies all files that are included by a respective file. In one embodiment, the methods further include modifying the source code base using the dependencies information, wherein the modified code base is more optimized than the source code base, and in response to determining a predetermined optimization threshold has not been reached, repeating the dependencies database generation operation and the source code base modification operation, wherein each time the operations are repeated, the dependencies database generation is performed based on a modified code base from a previous iteration. | 04-28-2016 |
20160132306 | Purity Analysis Using White List/Black List Analysis - Memoizable functions may be identified by analyzing a function's side effects. The side effects may be evaluated using a white list, black list, or other definition. The side effects may also be classified into conditions which may or may not permit memoization. Side effects that may have de minimus or trivial effects may be ignored in some cases where the accuracy of a function may not be significantly affected when the function may be memoized. | 05-12-2016 |
20160139896 | ALGORITHM TO DERIVE LOGIC EXPRESSION TO SELECT EXECUTION BLOCKS FOR PROGRAMMABLE NETWORK DEVICES - A processing network including a plurality of lookup and decision engines (LDEs) each having one or more configuration registers and a plurality of on-chip routers forming a matrix for routing the data between the LDEs, wherein each of the on-chip routers is communicatively coupled with one or more of the LDEs. The processing network further including an LDE compiler stored on a memory and communicatively coupled with each of the LDEs, wherein the LDE compiler is configured to generate values based on input source code that when programmed into the configuration registers of the LDEs cause the LDEs to implement the functionality defined by the input source code. | 05-19-2016 |
20180024823 | ENHANCED LOCAL COMMONING | 01-25-2018 |
20190146765 | UTILIZING CREATED CHARACTER INDEX FOR SWITCH STATEMENTS | 05-16-2019 |