Static (source Or Intermediate Level) Patents (Class 717/152)
  • Publication number: 20120254846
    Abstract: 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.
    Type: Application
    Filed: March 31, 2011
    Publication date: October 4, 2012
    Inventors: Mark S. Moir, David Dice, Srikanta N. Tirthapura
  • Patent number: 8281296
    Abstract: A system and method are provided for inlining a program call between processes executing under separate ISAs (Instruction Set Architectures) within a system virtual machine. The system virtual machine hosts any number of virtual operating system instances, each of which may execute any number of applications. The system virtual machine interprets or dynamically compiles not only application code executing under virtual operating systems, but also the virtual operating systems. For a program call that crosses ISA boundaries, the virtual machine assembles an intermediate representation (IR) graph that spans the boundary. Region nodes corresponding to code on both sides of the call are enhanced with information identifying the virtual ISA of the code. The IR is optimized and used to generate instructions in a native ISA (Instruction Set Architecture) of the virtual machine. Individual instructions are configured and executed (or emulated) to perform as they would within the virtual ISA.
    Type: Grant
    Filed: August 12, 2008
    Date of Patent: October 2, 2012
    Assignee: Oracle America, Inc.
    Inventors: Christopher A. Vick, Gregory M. Wright, Mario I. Wolczko
  • Patent number: 8276129
    Abstract: One embodiment of the present invention sets forth a system that allows a software developer to perform shader debugging and performance tuning. The system includes an interception layer between the software application and the application programming interface (API). The interception layer is configured to intercept and store source code versions of the original shaders included in the application. For each object in the frame, the interception layer makes shader source code available to the developer, so that the developer can modify the source code as needed, re-compile only the modified shader source code, and run the application. Consequently, shader debugging and performance tuning may be carried out in a manner that is more efficient and effective relative to prior art approaches.
    Type: Grant
    Filed: August 13, 2007
    Date of Patent: September 25, 2012
    Assignee: NVIDIA Corporation
    Inventors: Jeffrey T. Kiel, Derek M. Cornish
  • Patent number: 8266605
    Abstract: Described is a method and system for optimizing a code layout for execution on a processor including internal and/or external cache memory. The method and system includes executing a program having a first layout, generating at least one memory access parameter for the program, the memory access parameter being based on a cache memory of a computing system on which the program is designed to run and constructing a second layout for the program as a function of the at least one memory access parameter.
    Type: Grant
    Filed: February 22, 2006
    Date of Patent: September 11, 2012
    Assignee: Wind River Systems, Inc.
    Inventors: Roger Wiles, Maarten Koning
  • Patent number: 8261251
    Abstract: An error handling operation for checking of an array access in program code is modified during compilation thereof. A sequentially arranged null checking operation and array bounds checking operation for the array access are located. The array bounds checking operation has a corresponding error handling operation operable for setting an array bounds error. The located sequentially arranged null checking operation is removed. The corresponding error handling operation for the located sequentially arranged array bounds checking operation is modified to perform the removed null checking operation during execution of the program code.
    Type: Grant
    Filed: October 22, 2008
    Date of Patent: September 4, 2012
    Assignee: International Business Machines Corporation
    Inventor: Allan Henry Kielstra
  • Patent number: 8261250
    Abstract: A single-chip multiprocessor system and operation method of this system based on a static macro-scheduling of parallel streams for multiprocessor parallel execution. The single-chip multiprocessor system has buses for direct exchange between the processor register files and access to their store addresses and data. Each explicit parallelism architecture processor of this system has an interprocessor interface providing the synchronization signals exchange, data exchange at the register file level and access to store addresses and data of other processors. The single-chip multiprocessor system uses ILP to increase the performance. Synchronization of the streams parallel execution is ensured using special operations setting a sequence of streams and stream fragments execution prescribed by the program algorithm.
    Type: Grant
    Filed: January 10, 2011
    Date of Patent: September 4, 2012
    Assignee: Elbrus International
    Inventors: Boris A. Babaian, Yuli Kh. Sakhin, Vladimir Yu. Volkonskiy, Sergey A. Rozhkov, Vladimir V. Tikhorsky, Feodor A. Gruzdov, Leonid N. Nazarov, Mikhail L. Chudakov
  • Patent number: 8250551
    Abstract: A method and apparatuses for allowing additional tail call optimizations. The compiler generates both optimized and non-optimized code for tail call candidates. At a later time when there is more information (e.g. regarding program bounds), a decision and a modification to the executable code is made, implementing one of the two earlier codes.
    Type: Grant
    Filed: January 17, 2008
    Date of Patent: August 21, 2012
    Assignee: International Business Machines Corporation
    Inventors: James A. Kryka, Tim C. Muehe, Robert R. Roediger, Roger W. Southwick
  • Patent number: 8245210
    Abstract: Compile-time context information is captured and provided to a runtime binder for dynamic features in programming languages. For example, a C# run-time binder uses the information to perform a run-time bind with semantics matching the compiler's binding behavior. Dynamic programming language features supported relate to compound operations, events, delegates, member accessibility, dynamic-typed objects, structs passed by ref, arguments passed by name rather than position, extension methods, conditionally compiled methods, literal arguments, overflow checking, dynamic indexed properties, dynamic method groups, and static method groups.
    Type: Grant
    Filed: May 22, 2009
    Date of Patent: August 14, 2012
    Assignee: Microsoft Corporation
    Inventors: Samuel Ng, Mads Torgersen, Martin Maly, Christopher Joseph Burrows, James Hugunin
  • Publication number: 20120185835
    Abstract: 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.
    Type: Application
    Filed: January 13, 2011
    Publication date: July 19, 2012
    Inventors: Levy Klots, Andrey Sukhachev, Xiaoliang Wei
  • Patent number: 8225295
    Abstract: We show that register allocation can be viewed as solving a collection of puzzles. We model the register file as a puzzle board and the program variables as puzzle pieces. We model pre-coloring by letting some of the puzzle pieces be already immovably placed on the puzzle board, and we model register aliasing by letting pieces have a plurality widths. For a wide variety of computer architectures, we can solve the puzzles in polynomial time. Puzzle solving is independent of spilling, that is, puzzle solving can be combined with a wide variety of approaches to spilling.
    Type: Grant
    Filed: September 20, 2008
    Date of Patent: July 17, 2012
    Inventors: Jens Palsberg, Fernando M. Q. Pereira
  • Patent number: 8225299
    Abstract: Program converting methods, apparatus and systems including a code analysis unit for performing lexical and syntactic analyses of a source code of an execution program, an optimization unit for transforming this execution program, and an output code generation unit for converting the transformed execution program into a machine language code. In addition, this optimization unit detects a calling procedure and a called procedure in a procedure call of this execution program analyzed by the code analysis unit, guards an evaluation of an argument described in the called procedure under a predetermined evaluation condition, and transforms the execution program so that the evaluation is performed when referring to this argument.
    Type: Grant
    Filed: November 26, 2007
    Date of Patent: July 17, 2012
    Assignee: International Business Machines Corporation
    Inventor: Mikio Takeuchi
  • Patent number: 8214818
    Abstract: In one embodiment, the present invention includes a method for constructing a data dependency graph (DDG) for a loop to be transformed, performing statement shifting to transform the loop into a first transformed loop according to at least one of first and second algorithms, performing unimodular and echelon transformations of a selected one of the first or second transformed loops, partitioning the selected transformed loop to obtain maximum outer level parallelism (MOLP), and partitioning the selected transformed loop into multiple sub-loops. Other embodiments are described and claimed.
    Type: Grant
    Filed: August 30, 2007
    Date of Patent: July 3, 2012
    Assignee: Intel Corporation
    Inventors: Li Liu, Buqi Cheng, Gansha Wu
  • Patent number: 8201159
    Abstract: An information handling system (IHS) employs a compiler methodology that seeks to improve the efficiency of code that executes in a multi-core processor. The compiler receives source code and converts the source code for execution using data parallel select operations that perform well in a single instruction multiple data (SIMD) environment. The compiler of the IHS may apply one or several optimization processes to the code to increase execution efficiency in a parallel processing environment.
    Type: Grant
    Filed: August 4, 2006
    Date of Patent: June 12, 2012
    Assignee: International Business Machines Corporation
    Inventor: Michael Karl Gschwind
  • Patent number: 8196126
    Abstract: Systems and methods are provided for generating high-level program code of a rule-based application for interpreting and executing business rules. In one exemplary embodiment, a method is provided that comprises retrieving high-level program code capable of performing the functionality of a business rule called by the rule-based application, wherein the high-level program code includes an annotated set of instructions for the dynamic generation of generated code. The method may also comprise processing the annotated set of instructions with a generator component to create generated code from the high-level program code, mapping the generated code to the called business rule, and utilizing the generated code to execute the functionality of the called business rule.
    Type: Grant
    Filed: October 29, 2007
    Date of Patent: June 5, 2012
    Assignee: SAP AG
    Inventor: Carsten Ziegler
  • Patent number: 8196127
    Abstract: An information handling system (IHS) employs a compiler methodology that seeks to improve the efficiency of code that executes in a multi-core processor. The compiler receives source code and converts the source code for execution using data parallel select operations that perform well in a single instruction multiple data (SIMD) environment. The compiler of the IHS may apply one or several optimization processes to the code to increase execution efficiency in a parallel processing environment.
    Type: Grant
    Filed: August 4, 2006
    Date of Patent: June 5, 2012
    Assignee: International Business Machines Corporation
    Inventor: Michael Karl Gschwind
  • Patent number: 8185882
    Abstract: A hardware Java accelerator is provided to implement portions of the Java virtual machine in hardware in order to accelerate the operation of the system on Java bytecodes. The Java hardware accelerator preferably includes Java bytecode translation into native CPU instructions. The combination of the Java hardware accelerator and a CPU provides a embedded solution which results in an inexpensive system to run Java programs for use in commercial appliances.
    Type: Grant
    Filed: February 14, 2006
    Date of Patent: May 22, 2012
    Assignee: Nazomi Communications Inc.
    Inventors: Mukesh K Patel, Jay Kamdar, Veeraganti R. Ranganath
  • Patent number: 8165865
    Abstract: A method for modeling and simulating a system comprising first and second interrelated components is disclosed. The method comprises modeling the behavior of said first and second components using first and second specifications. Each of said first and second specifications includes a functional specification and an associated simulation element. The method further comprises simulating the behavior of said first and second components using said first and second specifications. The simulation elements communicate with one another to provide a simulation system.
    Type: Grant
    Filed: January 18, 2007
    Date of Patent: April 24, 2012
    Assignee: Mentor Graphics Corporation
    Inventors: Daniel Robin Parker, Christopher Jones, Jason Sotiris Polychronopoulos
  • Patent number: 8166468
    Abstract: A computer implemented method, computer program product, and data processing system for reducing the number of inner classes in a compiled computer program written in an object-oriented programming language. An outer class of the compiled computer program is received, wherein the outer class contains an inner class, wherein the outer class comprises instructions to create an instance of an inner class. The instance is to be used as one of a callback, a listener command, a set of instructions by which an object instance of the inner class transfers information to the corresponding containing instance of the outer class, and combinations thereof. A transformation of the outer class is performed by moving methods of the inner class, as well as their contained instructions, into the outer class. The behavior of the compiled computer program remains unchanged.
    Type: Grant
    Filed: November 30, 2007
    Date of Patent: April 24, 2012
    Assignee: International Business Machines Corporation
    Inventors: Sean Christopher Foley, Berthold Martin Lebert
  • Publication number: 20120089962
    Abstract: A method includes, using a static analysis performed on code, analyzing the code to determine a set of unchanged objects and modifying the code to exercise a singleton-pattern technique for one or more members of the set of unchanged objects. The method also includes outputting the modified code. Apparatus and program products are also disclosed. Another method includes accessing code from a client, and in response to any of the code being source code, compiling the source code into object code until all the code from the client comprises object code. The method further includes, using a static analysis performed on the object code, analyzing the object code to determine a set of unchanged objects and modifying the object code to exercise a singleton-pattern technique for one or more members of the set of unchanged objects. The method additionally includes returning the modified object code to the client.
    Type: Application
    Filed: October 8, 2010
    Publication date: April 12, 2012
    Applicant: International Business Machines Corporation
    Inventors: Paolina Centonze, Peter K. Malkin, Marco Pistoia
  • Patent number: 8156481
    Abstract: A device generates code with a technical computing environment (TCE) based on a model and information associated with a target processor, registers an algorithm with the TCE, automatically sets optimization parameters applied during generation of the code based on the algorithm, executes the generated code, receives feedback based on execution of the generated code, and uses the feedback to automatically update the optimization parameters and to automatically regenerate the code with the TCE until an optimal code is achieved for the target processor.
    Type: Grant
    Filed: October 5, 2007
    Date of Patent: April 10, 2012
    Assignee: The Mathworks, Inc.
    Inventors: David Koh, Murat Belge, Pieter J. Mosterman
  • Patent number: 8156483
    Abstract: A method and system of detecting vulnerabilities in source code. Source code is parsed into an intermediate representation. Models (e.g., in the form of lattices) are derived for the variables in the code and for the variables and/or expressions used in conjunction with routine calls. The models are then analyzed in conjunction with pre-specified rules about the routines to determine if the routine call posses one or more of pre-selected vulnerabilities.
    Type: Grant
    Filed: June 27, 2008
    Date of Patent: April 10, 2012
    Assignee: International Business Machines Corporation
    Inventors: Ryan J. Berg, Larry Rose, John Peyton, John J. Danahy, Robert Gottlieb, Chris Rehbein
  • Patent number: 8145992
    Abstract: Systems and methods are described that facilitate validating electronic document conversion chain design in real time, as a designer edits a conversion chain that converts a document collection between formats. Waypoints are inserted into the document conversion chain by associating validation specifications with selected conversion components in the chain. AS the conversion chain is executed on a document collection, the validation specification is executed on all documents in the collection when a selected conversion component is executed. Validation results are returned to indicate to the designer which documents were successfully converted by the component and which were not. The designer can then modify the conversion chain, which is re-executed, and validation results are again presented to the designer for comparison to the pre-modification validation results. The designer can then approve or reject the modification(s) depending on whether document validation is improved thereby.
    Type: Grant
    Filed: June 30, 2008
    Date of Patent: March 27, 2012
    Assignee: Xerox Corporation
    Inventors: Thierry Jacquin, Jean-Pierre Chanod
  • Patent number: 8141063
    Abstract: Exemplary embodiments of the present invention comprise an algorithm described herein that utilizes a technique to shrink a set of potentially reachable elements to a close approximation of the actually reachable elements within a software application by closely approximating how the application executes at runtime. The algorithm attempts to identify all of the reachable elements of an object-oriented software application by starting with the entry points into the application and thereafter progressively determining all of the software elements within the application that are reachable. The algorithm instantiates application objects in the same way they would be instantiated at runtime and passes references to these objects from one method and field to the next; emulating as closely as possible object instantiation performed by the application at runtime.
    Type: Grant
    Filed: August 30, 2007
    Date of Patent: March 20, 2012
    Assignee: International Business Machines Corporation
    Inventor: Sean C. Foley
  • Patent number: 8141062
    Abstract: A method for optimizing a code section prior to performing register allocation for variables referenced in the plurality of computer instructions. The method includes performing at least one of a full prematerialization or a partial prematerialization for a variable in the plurality of computer instructions. The full prematerialization replaces the variable in every use of the variable in the plurality of computer instructions with one or more variants of the variable and replaces a definition of the variable with a nop instruction. The partial prematerialization replaces some but not all occurrences of the variable in uses of the variable in the plurality of computer instructions with one or more variants of the variable without replacing the definition of the variable with the nop instruction.
    Type: Grant
    Filed: January 31, 2007
    Date of Patent: March 20, 2012
    Assignee: Hewlett-Packard Development Company, L.P.
    Inventors: Ivan D. Baev, David H. Gross, Richard E. Hank
  • Patent number: 8141064
    Abstract: A method for analyzing a program is provided. The method includes, determining an object type that may exist at an execution point of the program, wherein this enables determination of possible virtual functions that may be called; creating a call graph at a main entry point of the program; and recording an outgoing function call within a main function. The method also includes analyzing possible object types that may occur at any given instruction from any call path for virtual calls, wherein possible object types are determined by tracking object types as they pass through plural constructs; and calling into functions generically for handling specialized native runtime type information.
    Type: Grant
    Filed: December 11, 2008
    Date of Patent: March 20, 2012
    Assignee: Lantronix, Inc.
    Inventor: Timothy Chipman
  • Patent number: 8141061
    Abstract: A compiler utility assigns memory locations to alias-free variables within a computer program. The compiler utility allocates memory keys for the alias-free variables, such that access to the memory locations of the alias-free variables is granted to blocks of code that have knowledge of the memory keys. In response to a command by the user, the compiler generates code to detect violations of alias assumptions during execution of the computer program. During the compiling process, the compiler adds the generated code for detecting violations of alias assumptions to the compiled computer program.
    Type: Grant
    Filed: November 13, 2006
    Date of Patent: March 20, 2012
    Assignee: International Business Machines Corporation
    Inventors: Francis M. Bartucca, Billy R. Robinson, Punit B. Shah, Carlos P. Sosa
  • Patent number: 8136104
    Abstract: A runtime system implemented in accordance with the present invention provides an application platform for parallel-processing computer systems. Such a runtime system enables users to leverage the computational power of parallel-processing computer systems to accelerate/optimize numeric and array-intensive computations in their application programs. This enables greatly increased performance of high-performance computing (HPC) applications.
    Type: Grant
    Filed: March 5, 2007
    Date of Patent: March 13, 2012
    Assignee: Google Inc.
    Inventors: Matthew N. Papakipos, Brian K. Grant, Morgan S. McGuire, Christopher G. Demetriou
  • Patent number: 8132150
    Abstract: A method and computer readable medium for automatic replacement of object classes in a library with custom classes to improve program efficiency. The method begins with static analysis preformed on a program containing a plurality of objects in order to determine type-correctness constraints and to detect unused functionality in one or more of the objects to be replaced. The plurality of objects is instrumented to detect usage patterns of functionality in one or more objects. Customized classes are generated based upon the static analysis and usage patterns detected. Bytecode is rewritten which is used for generating classes. The present invention provides transparency in the replacement of the objects.
    Type: Grant
    Filed: February 20, 2008
    Date of Patent: March 6, 2012
    Assignee: International Business Machines Corporation
    Inventors: Bjorn De Sutter, Julian Dolby, Frank Tip
  • Patent number: 8122430
    Abstract: A method and computer readable medium for automatic replacement of object classes in a library with custom classes to improve program efficiency. The method begins with static analysis preformed on a program containing a plurality of objects in order to determine type-correctness constraints and to detect unused functionality in one or more of the objects to be replaced. The plurality of objects is instrumented to detect usage patterns of functionality in one or more objects. Customized classes are generated based upon the static analysis and usage patterns detected. Bytecode is rewritten which is used for generating classes. The present invention provides transparency in the replacement of the objects.
    Type: Grant
    Filed: October 29, 2007
    Date of Patent: February 21, 2012
    Assignee: International Business Machines Corporation
    Inventors: Bjorn De Sutter, Julian Dolby, Frank Tip
  • Patent number: 8117605
    Abstract: In a multi-threaded computer system that uses transactional memory, object fields accessed by only one thread are accessed by regular non-transactional read and write operations. When an object may be visible to more than one thread, access by non-transactional code is prevented and all accesses to the fields of that object are performed using transactional code. In one embodiment, the current visibility of an object is stored in the object itself. This stored visibility can be checked at runtime by code that accesses the object fields or code can be generated to check the visibility prior to access during compilation.
    Type: Grant
    Filed: December 19, 2005
    Date of Patent: February 14, 2012
    Assignee: Oracle America, Inc.
    Inventors: Yosef Lev, Jan-Willem Maessen, Mark S. Moir
  • Patent number: 8117606
    Abstract: A system and method for assessing performance of a software application migrated to a grid infrastructure is provided. The system comprises a grid code analyzer for generating a directed acyclic graph (DAG) corresponding to the software application by performing static and dynamic analysis; a grid task generator for reducing the DAG generated by the grid code analyzer; and a grid simulator for simulating performance of the software application on one or more predetermined grid infrastructures. The grid simulator accepts the reduced DAG as input and produces performance data as output.
    Type: Grant
    Filed: June 4, 2007
    Date of Patent: February 14, 2012
    Assignee: Infosys Technologies Ltd.
    Inventors: Anirban Chakrabarti, Shubhashis Sengupta, Anish Damodaran
  • Publication number: 20120030660
    Abstract: 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.
    Type: Application
    Filed: July 30, 2010
    Publication date: February 2, 2012
    Inventor: Roland McGrath
  • Patent number: 8108843
    Abstract: A method (and system) for performing an emulation of an operation of a target computing system, includes interpreting a target instruction, recognizing an unused capacity of a host system when the host system is interpreting the instruction, and performing a translation of the instruction without increasing a time of interpreting the instruction.
    Type: Grant
    Filed: September 17, 2002
    Date of Patent: January 31, 2012
    Assignee: International Business Machines Corporation
    Inventors: Ravi Nair, John Kevin O'Brien, Kathryn Mary O'Brien, Peter Howland Oden, Daniel Arthur Prener
  • Patent number: 8108849
    Abstract: A compiler has the capability to selectively compile individual portions of a compilable code module for optimum execution performance or for serviceability. In one aspect, individual portions, such as procedures (being less than the entire module) are selectively optimized. In another aspect, debug activity data is used for determining whether or not to optimize compiled code. It is optionally possible to support one or more levels of partial selective optimization.
    Type: Grant
    Filed: September 7, 2007
    Date of Patent: January 31, 2012
    Assignee: International Business Machines Corporation
    Inventors: John Michael Adolphson, Cary Lee Bates, Paul Reuben Day, Steven Gene Halverson
  • Patent number: 8104027
    Abstract: An improved architecture for a program code conversion apparatus and method for generating intermediate representations for program code conversion. The program code conversion apparatus determines which types of IR nodes to generate in an intermediate representation (IR) of subject code (10) to be translated. Depending upon the particular subject and target computing environments involved in the conversion, the program code conversion apparatus utilizes either base nodes, complex nodes, polymorphic nodes, and architecture specific nodes, or some combination thereof, in generating the intermediate representation.
    Type: Grant
    Filed: May 28, 2008
    Date of Patent: January 24, 2012
    Assignee: International Business Machines Corporation
    Inventors: Daniel Owen, Jonathan Jay Andrews, Miles Philip Howson, David Haikney
  • Patent number: 8099726
    Abstract: A software transactional memory system is described which utilizes decomposed software transactional memory instructions as well as runtime optimizations to achieve efficient performance. The decomposed instructions allow a compiler with knowledge of the instruction semantics to perform optimizations which would be unavailable on traditional software transactional memory systems. Additionally, high-level software transactional memory optimizations are performed such as code movement around procedure calls, addition of operations to provide strong atomicity, removal of unnecessary read-to-update upgrades, and removal of operations for newly-allocated objects. During execution, multi-use header words for objects are extended to provide for per-object housekeeping, as well as fast snapshots which illustrate changes to objects. Additionally, entries to software transactional memory logs are filtered using an associative table during execution, preventing needless writes to the logs.
    Type: Grant
    Filed: March 23, 2006
    Date of Patent: January 17, 2012
    Assignee: Microsoft Corporation
    Inventor: Timothy Lawrence Harris
  • Patent number: 8095922
    Abstract: A method and computer program product for providing an optimization for a most derived object during compile time are provided. The optimization determines whether a most derived class object is present during a compile time. Also, the optimization utilizes the most derived class object to obtain a location of a virtual base for the most derived class object during the compile time, and provides the virtual base of the most derived class object during the compile time. The method is executed for a constructor and/or a destructor. The constructor or destructor contains arguments which require conversion to a base type, and the conversion is performed at compile-time instead of at runtime.
    Type: Grant
    Filed: August 29, 2007
    Date of Patent: January 10, 2012
    Assignee: International Business Machines Corporation
    Inventor: Michael Wong
  • Patent number: 8087012
    Abstract: A technique is provided for eliminating maximum and minimum expressions within loop bounds are provided. A loop in a code is identified. The loop is determined to meet conditions, which require an upper loop bound and a lower loop bound to contain maximum and minimum expressions, loop-invariant operands, a predetermined size for a code size, and a total number of instructions to be greater than a predetermined constant. A profitability of loop versioning is determined based on a performance gain of a fast version of the loop, a probability of executing the fast version of the loop at runtime, and an overhead for performing loop versioning. A pair of lower loop bound and upper loop bound values resulting in a constant number is identified. A loop iteration value is checked to be a non-zero constant. Branches are identified, and loop versioning is performed to generate a versioned loop.
    Type: Grant
    Filed: August 21, 2007
    Date of Patent: December 27, 2011
    Assignee: International Business Machines Corporation
    Inventor: Edwin Chan
  • Publication number: 20110307869
    Abstract: Creating and executing platform portable code. A method includes declaring an object as being a dynamic object in a program. The program is a program compiled using a static language, except that the dynamic object is excluded from static analysis on the object when the program is compiled. The dynamic object includes a dependent call to a platform specific API. The platform specific API is available on one or more platforms to which a compiled version of the program will be deployed, but not available on one or more other platforms to which the compiled version of the program will be deployed.
    Type: Application
    Filed: June 15, 2010
    Publication date: December 15, 2011
    Applicant: Microsoft Corporation
    Inventors: Krzysztof Janusz Cwalina, Westley Haggard
  • Patent number: 8056069
    Abstract: A method, computer program product, and information handling system for generating loop code to execute on Single-Instruction Multiple-Datapath (SIMD) architectures, where the loop contains multiple non-stride-one memory accesses that operate over a contiguous stream of memory is disclosed. A preferred embodiment identifies groups of isomorphic statements within a loop body where the isomorphic statements operate over a contiguous stream of memory over the iteration of the loop. Those identified statements are then converted into virtual-length vector operations. Next, the hardware's available vector length is used to determine a number of virtual-length vectors to aggregate into a single vector operation for each iteration of the loop. Finally, the aggregated, vectorized loop code is converted into SIMD operations.
    Type: Grant
    Filed: September 17, 2007
    Date of Patent: November 8, 2011
    Assignee: International Business Machines Corporation
    Inventors: Alexandre E. Eichenberger, Kai-Ting Amy Wang, Peng Wu
  • Patent number: 8046678
    Abstract: A web page is generated by applying a partial evaluation technique. In one embodiment, at design time, a page designer enables a dynamic version of a page specification program to be generated, such as by way of a page customization interface. This dynamic version can be executed during the design process, with page customization choices evaluated in a dynamic manner. The parts of the page specification that can be evaluated to static form at design time are identified, and the program is partially evaluated, with the identified parts transformed to static form. The remaining dynamic parts of the page specification program are executed at request time, resulting in a generation of the page to be provided for display over the network. In general, different parts of a page specification program may be selected for evaluation at different times, and there may be more than two phases of evaluation.
    Type: Grant
    Filed: August 22, 2005
    Date of Patent: October 25, 2011
    Assignee: Yahoo! Inc.
    Inventors: David Jackson, Aamod Sane, Ashish Kasi, Chandra Pisupati
  • Patent number: 8028280
    Abstract: A computer program product and computer system for implementing a method of compiler optimisation of source code during compilation of the source code in a computer environment. The compiler optimisation of source code includes: recasting two algebraic expressions into a form of one or more token pairs arranged sequentially in a string, each token pair including an operator followed by an operand; reducing the strings in accordance with a set of predetermined simplifying rules; and comparing the reduced strings by matching to detect an equivalence of the two algebraic expressions.
    Type: Grant
    Filed: January 17, 2008
    Date of Patent: September 27, 2011
    Assignee: International Business Machines Corporation
    Inventor: Rajendra Kumar Bera
  • Patent number: 8024718
    Abstract: One aspect of the invention includes a method of address expression optimization of source-level code. The source-level code describes the functionality of an application to be executed on a digital device. The method comprises first inputting first source-level code that describes the functionality of the application into optimization system. The optimization system then transforms the first source-level into a second source level that has fewer nonlinear operations than the first source-level code.
    Type: Grant
    Filed: November 21, 2005
    Date of Patent: September 20, 2011
    Assignee: IMEC
    Inventors: Miguel Miranda, Francky Catthoor, Martin Janssen, Hugo De Man
  • Patent number: 8020147
    Abstract: Implementation size of a software package implementation can be determined by determining implementation sizes of modules, determining tasks to be implemented, determining a complexity factor, and calculating the implementation size based on the modules, tasks, and complexity factor. Implementation size of a software package implementation can be determined using a sizing framework. The sizing framework can comprise a repository of modules and functionality provided by the modules, a standard album of tasks, effort information for the tasks, and a repository of complexity values. A sizing tool can determine an implementation size of a software package implementation. The sizing tool can comprise user-interface pages for receiving a selection of modules, for receiving a selection of functionality, for receiving a selection of tasks to be implemented for the software package, and for receiving a selection of complexity values. The sizing tool can calculate the implementation size based on the selections.
    Type: Grant
    Filed: October 12, 2007
    Date of Patent: September 13, 2011
    Assignee: Infosys Limited
    Inventors: Atul Chaturvedi, Rajeev Ranjan, RamPrasad Vadde
  • Publication number: 20110214016
    Abstract: Mechanisms for aggressively optimizing computer code are provided. With these mechanisms, a compiler determines an optimization to apply to a portion of source code and determines if the optimization as applied to the portion of source code will result in unsafe optimized code that introduces a new source of exceptions being generated by the optimized code. In response to a determination that the optimization is an unsafe optimization, the compiler generates an aggressively compiled code version, in which the unsafe optimization is applied, and a conservatively compiled code version in which the unsafe optimization is not applied. The compiler stores both versions and provides them for execution. Mechanisms are provided for switching between these versions during execution in the event of a failure of the aggressively compiled code version. Moreover, predictive mechanisms are provided for predicting whether such a failure is likely.
    Type: Application
    Filed: March 1, 2010
    Publication date: September 1, 2011
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventor: Michael K. Gschwind
  • Patent number: 8006233
    Abstract: The present relates to a method for verifying privileged and subject-executed code within a program, the method further comprising the steps of constructing a static model of a program, identifying checkPermission nodes that are comprised within the invocation graph, and performing a fixed-point iteration, wherein each determined permission set is propagated backwards across the nodes of the static model until a privilege-asserting code node is reached. The method further comprises the steps of associating each node of the invocation graph with a set of Permission allocation sites, analyzing each identified privilege-asserting code node and subject-executing code node to determine the Permission allocation site set that is associated with each privilege-asserting code node and subject-executing code node, and determining the cardinality of a Permission allocation-site set that is associated with each privilege-asserting code node and subject-executing code node.
    Type: Grant
    Filed: February 21, 2007
    Date of Patent: August 23, 2011
    Assignee: International Business Machines Corporation
    Inventors: Paolina Centonze, Marco Pistoia
  • Patent number: 7979853
    Abstract: Compiler device optimizes a program by changing an order of executing instructions.
    Type: Grant
    Filed: January 24, 2008
    Date of Patent: July 12, 2011
    Assignee: International Business Machines Corporation
    Inventors: Motohiro Kawahito, Hideaki Komatsu
  • Publication number: 20110161945
    Abstract: 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.
    Type: Application
    Filed: December 26, 2009
    Publication date: June 30, 2011
    Inventors: Spiros Kalogeropulos, Partha P. Tirumalai, Yonghong Song
  • Patent number: 7966610
    Abstract: The present invention provides a method and system for optimization of an intermediate representation in a graphical modeling environment. A first intermediate representation is provided. At least one optimization technique is applied to the first intermediate representation. A second intermediate representation is generated responsive to the application of the at least one optimization technique to the first intermediate representation.
    Type: Grant
    Filed: November 17, 2005
    Date of Patent: June 21, 2011
    Assignee: The MathWorks, Inc.
    Inventor: Xiaocang Lin
  • Patent number: 7941792
    Abstract: A system is disclosed for compiling program code. The system provides a compiler that includes a static verifier and a runtime verifier. The static verifier performs static checks on the program code and produces object code corresponding to the program code. The runtime verifier receives the object code and performs dynamic checks on the object code in a platform dependent environment. The resulting object code can subsequently be executed.
    Type: Grant
    Filed: July 22, 2005
    Date of Patent: May 10, 2011
    Assignee: Red Hat, Inc.
    Inventor: Thomas Joseph Tromey