Using Procedure Or Function Call Graph Patents (Class 717/157)
  • Publication number: 20130061215
    Abstract: Whole program analysis during a link time code generation part of compilation can be used to detect and eliminate dead catch handlers. If all catch handlers of a try clause in a computer program are found to be dead then the try clause can also be eliminated. Detection of dead catches can be automatic, using iterative propagation of the types of thrown exceptions from callee function to caller function from bottom to top in the call-graph and iterative propagation of the types of in-flight exceptions from caller function to callee function from top to bottom in the call-graph.
    Type: Application
    Filed: September 2, 2011
    Publication date: March 7, 2013
    Applicant: MICROSOFT CORPORATION
    Inventors: Patrick Sathyanathan, Ten Tzen
  • Patent number: 8392013
    Abstract: A method for automating a process includes the following steps: providing a user interface which graphically presents a plurality of icons to a user, wherein each icon represents an operation step having at least one input and at least one output; enabling the user to select one or more of the icons; enabling the user to form connections between the selected icons to represent data flow between the operation steps represented by the icons; and generating computer instructions for executing the operation steps corresponding to the selected icons, and in accordance with the connections, in such a way that each operation step can only be executed when data is present at all of its inputs, and cannot be executed when data is absent at any one of its inputs.
    Type: Grant
    Filed: January 27, 2006
    Date of Patent: March 5, 2013
    Assignee: Microgen Aptitude Limited
    Inventors: Neil Thomson, Grzegorz R. Pusz
  • Patent number: 8370821
    Abstract: Methods and systems for computer program optimization utilize function cloning in program code, such as post-linked code. Each function call is directed to a different cloned version of the called function. Conventional profiling methods such as hardware event sampling, basic block profiling, and edge profiling may then be applied to the modified program code to obtain call path-based, clone-specific profile data. The profile data can be further exploited to optimize the program code.
    Type: Grant
    Filed: August 21, 2007
    Date of Patent: February 5, 2013
    Assignee: International Business Machines Corporation
    Inventors: Gad Haber, Roy Levin, Shmuel Ur
  • Patent number: 8359584
    Abstract: A system and method for debugging a computer program by using a call graph. A call graph that represents trace events during execution of a debuggee program may be used as input to a system that enables a user to debug the debuggee program. Mechanisms facilitate conditionally forming clusters of event nodes, a cluster indicative of multiple event nodes corresponding to an execution of a source language statement. During a debugging session, in response to a command to perform a step operation, the nodes of a cluster are processed together so that a step corresponds to multiple events if the multiple events correspond to a single source language statement. A mechanism for inspecting variables is provided. Variable values may be selectively propagated and provided based on the call graph and a static control flow analysis of the debuggee program.
    Type: Grant
    Filed: December 18, 2009
    Date of Patent: January 22, 2013
    Assignee: Microsoft Corporation
    Inventors: Abhijit Rao, Steven J. Steiner
  • Patent number: 8359588
    Abstract: A method of reducing inter-task latency for software comprising a sequence of instructions including a synchronous remote procedure call to be executed on a multiprocessor system comprising a calling processor and at least one remote engine. The method comprises the steps of: inputting the software; inputting a runtime resource description describing a runtime environment of the multiprocessor system; identifying the synchronous remote procedure call in the sequence of instructions; replacing the synchronous remote procedure call in the sequence of instructions with an initiation instruction and a wait instruction to generate a substitute sequence of instructions; reordering the substitute sequence of instructions with reference to the runtime resource description and the dependencies to generate a reordered sequence of instructions; and outputting the reordered sequence of instructions.
    Type: Grant
    Filed: November 25, 2009
    Date of Patent: January 22, 2013
    Assignee: Arm Limited
    Inventor: Alastair David Reid
  • Patent number: 8347273
    Abstract: A specification of a routine name of a root of a call tree and a specification of a desired depth of call tree tracing are obtained. Upon entering a given routine in a program, a determination is made whether the given routine is the root. Responsive to determining that the given one of the routines is the root, trace information for the routine forming the root is output. Furthermore, upon entering a given one of the routines called, directly or indirectly, by the routine forming the root, a determination is made whether the given one of the routines called, directly or indirectly, by the routine forming the root of the call tree is within the desired depth from the routine forming the root of the call tree; and if this is the case, trace information is output for given one of the routines called, directly or indirectly, by the routine forming the root of the call tree.
    Type: Grant
    Filed: October 9, 2008
    Date of Patent: January 1, 2013
    Assignee: International Business Machines Corporation
    Inventors: Prashanth K. Nageshappa, Prasanna K. Kalle, Venkataraghavan Lakshminarayanachar
  • Patent number: 8332833
    Abstract: A computer implemented method for facilitating debugging of source code. The source code is scanned to identify a candidate region. A procedure control descriptor is generated, wherein the procedure control descriptor corresponds to the candidate region. The procedure control descriptor identifies, for the candidate region, a condition which, if true at runtime means that the candidate region can be specialized. Responsive to a determination during compile time that satisfaction of at least one condition will be known only at runtime, the procedure control descriptor is used to specialize the candidate region at compile time to create a first version of the candidate region for execution in a case where the condition is true and a second version of the candidate region for execution in a case where the condition is false, and further generate code to correctly select one of the first region and the second region at runtime.
    Type: Grant
    Filed: June 4, 2007
    Date of Patent: December 11, 2012
    Assignee: International Business Machines Corporation
    Inventors: Roch Georges Archambault, Shimin Cui, Yaoqing Gao, Raul Esteban Silvera, Peng Zhao
  • Patent number: 8327325
    Abstract: A target application is automatically tuned. A list of solutions for identified performance bottlenecks in a target application is retrieved from a storage device. A plurality of modules is executed to compute specific parameters for solutions contained in the list of solutions. A list of modification commands associated with specific parameters computed by the plurality of modules is generated. The list of modification commands associated with the specific parameters is appended to a command sequence list. The list of modification commands is implemented in the target application. Specific source code regions corresponding to the identified performance bottlenecks in the target application are automatically tuned using the implemented list of modification commands. Then, the tuned target application is stored in the storage device.
    Type: Grant
    Filed: January 14, 2009
    Date of Patent: December 4, 2012
    Assignee: International Business Machines Corporation
    Inventors: I-Hsin Chung, Guojing Cong, David J. Klepacki, Simone Sbaraglia, Seetharami R. Seelam, Hui-Fang Wen
  • Patent number: 8327280
    Abstract: A system and method for visually indicating one or more problems in a graphical program. The graphical program may be programmatically analyzed to discover a problem (or potential problem) in the graphical program. The problem found during the programmatic analysis of the graphical program may then be visually indicated on a display device. Visually indicating the problem may comprise visually indicating one or more objects in the graphical program to which the problem corresponds. Visually indicating the graphical program object(s) may comprise displaying information or altering the appearance of the object(s) in order to call the user's attention to the object(s).
    Type: Grant
    Filed: November 13, 2009
    Date of Patent: December 4, 2012
    Assignee: National Instruments Corporation
    Inventor: Darren M. Nattinger
  • Patent number: 8302078
    Abstract: This description provides tools for lazy evaluation of geometric definitions of objects within procedural programming environments. Computer-based methods provided by these tools may parse input program code that includes statements that are syntactically consistent with a procedural programming language. These statements may also include defined functions that are not syntactically consistent with the procedural programming language. The defined functions may be associated with a given function that is defined according to the procedural programming language. The given function may relate to a geometric design of an object. The methods may identify inputs and outputs to this given function, and may build a dependency graph that relates this given function to other functions, based on the inputs and/or outputs of the given function. The methods may delay evaluating the given function until a triggering event occurs, at which time the methods may evaluate the given function to produce the output.
    Type: Grant
    Filed: March 10, 2008
    Date of Patent: October 30, 2012
    Assignee: The Boeing Company
    Inventors: Paul Zack Thunemann, Thomas A. Grandine, Jan H. Vandenbrande, Gregory Mikel Anderson
  • Patent number: 8281290
    Abstract: A method may include mapping a first program to a context-free grammar. Grammar transformations may be performed on the context-free grammar to produce a transformed context-free grammar representing the first program. A second program having a program structure different than a program structure of the first program may be constructed from the transformed context-free grammar.
    Type: Grant
    Filed: January 31, 2008
    Date of Patent: October 2, 2012
    Assignee: Alcatel Lucent
    Inventor: Gerald R. Thompson
  • Patent number: 8245020
    Abstract: The present invention provides a configuration system, method, and software program for efficiently configuring products with dynamic components. Component definitions in the configuration system can include both static and dynamic attributes. Static attributes are fixed and are defined prior to the user configuring a product. Dynamic attributes are defined during a configuration session, and the values of dynamic attributes are unique to a configuration session. When an attribute of a dynamic component is specified or changed during the configuration process, the configurator creates only a partial instance of the component with the specified dynamic attribute, and it associates a state of the configuration process with such partial instance. When the configurator executes a constraint that involves a component with one or more dynamic attributes, the configurator uses, for each dynamic attribute, the most recent partial instance of the component with a value for that attribute.
    Type: Grant
    Filed: May 12, 2009
    Date of Patent: August 14, 2012
    Assignee: Selectica, Inc.
    Inventor: Pravil Gupta
  • Publication number: 20120198429
    Abstract: Mechanisms are provided for arranging binary code to reduce instruction cache conflict misses. These mechanisms generate a call graph of a portion of code. Nodes and edges in the call graph are weighted to generate a weighted call graph. The weighted call graph is then partitioned according to the weights, affinities between nodes of the call graph, and the size of cache lines in an instruction cache of the data processing system, so that binary code associated with one or more subsets of nodes in the call graph are combined into individual cache lines based on the partitioning. The binary code corresponding to the partitioned call graph is then output for execution in a computing device.
    Type: Application
    Filed: April 12, 2012
    Publication date: August 2, 2012
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Tong Chen, Brian Flachs, Brad W. Michael, Mark R. Nutter, John K.P. O'Brien, Kathryn M. O'Brien, Tao Zhang
  • Patent number: 8234636
    Abstract: A modification to source code is applied in an automated manner to improve program performance while maintaining the meaning of an associated program. Source code is rewritten to improve the operation of the associated program. Prior to applying the source code optimization to the program, confirmation of approval by the programmer must be maintained. In one embodiment, the programmer is presented with numerical data pertaining to an improvement ratio associated with application of the source code optimization.
    Type: Grant
    Filed: September 12, 2006
    Date of Patent: July 31, 2012
    Assignee: International Business Machines Corporation
    Inventors: Motohiro Kawahito, Hideaki Komatsu, Toshio Nakatani
  • Patent number: 8230411
    Abstract: For programming of modules which can be reprogrammed during operation and for partitioning of code sequences, a control and/or data flow graph may be extracted from a program and separated into a plurality of subgraphs, which may be distributed among the modules. The separation of the flow graph may be such that connections between different ones of the subgraphs are minimized. During execution of the program, after a first module completes execution of a first part of one of the subgraphs, the first module may be reconfigured for execution of a first part of a second subgraph, while a second module executes a second part of the first subgraph.
    Type: Grant
    Filed: June 13, 2000
    Date of Patent: July 24, 2012
    Inventors: Martin Vorbach, Armin Nückel
  • Patent number: 8214816
    Abstract: A compiler implemented software cache in which non-aliased explicitly fetched data are excluded are provided. With the mechanisms of the illustrative embodiments, a compiler uses a forward data flow analysis to prove that there is no alias between the cached data and explicitly fetched data. Explicitly fetched data that has no alias in the cached data are excluded from the software cache. Explicitly fetched data that has aliases in the cached data are allowed to be stored in the software cache. In this way, there is no runtime overhead to maintain the correctness of the two copies of data. Moreover, the number of lines of the software cache that must be protected from eviction is decreased. This leads to a decrease in the amount of computation cycles required by the cache miss handler when evicting cache lines during cache miss handling.
    Type: Grant
    Filed: May 28, 2008
    Date of Patent: July 3, 2012
    Assignee: International Business Machines Corporation
    Inventors: Tong Chen, John Kevin Patrick O'Brien, Kathryn O'Brien, Byoungro So, Zehra N. Sura, Tao Zhang
  • Patent number: 8214819
    Abstract: Function calls for a program are sampled to determine call counts in the program. The call counts are determined based on sampled function calls collected during sampling intervals.
    Type: Grant
    Filed: July 9, 2004
    Date of Patent: July 3, 2012
    Assignee: Hewlett-Packard Development Company, L.P.
    Inventor: David Mosberger
  • Patent number: 8214817
    Abstract: A computer implemented method, apparatus, and computer program product for generating an optimization insensitive behavior profile. In one embodiment, a source identifier is assigned to each instruction in an original control flow graph representing a program code prior to optimization. The identifiers identify a basic block associated with the instruction or a group of basic blocks. A source identifier in the set of source identifiers is assigned to instructions in an optimized control flow graph representing the program code after optimizing the program code. The instructions in the optimized control flow graph are mapped to the original control flow graph using the set of source identifiers to form a mapping transformation. Behavior profile data associated with the optimized program code is moved to basic blocks in the original control flow graph using the mapping transformation to form the optimization insensitive behavior profile.
    Type: Grant
    Filed: October 9, 2007
    Date of Patent: July 3, 2012
    Assignee: International Business Machines Corporation
    Inventors: Bilha Mendelson, Nitzan Peleg
  • Publication number: 20120151462
    Abstract: A parallel-code optimization system includes a siloed program reference-identifier and an intermediate representation (IR) updater. The siloed program reference identifier determines siloed program references in parallel code, wherein siloed program references are free of cross-thread interference. The IR updater modifies data-flow abstractions based on the identified siloed program references.
    Type: Application
    Filed: December 13, 2010
    Publication date: June 14, 2012
    Inventors: Pramod G. Joisha, Robert Samuel Schreiber, Prithviraj Banerjee, Hans Boehm, Dhruva R. Chakrabarti
  • Patent number: 8171449
    Abstract: A software tool is provided to analyze static source code. Source Code files are selected to define the project work space. A class and a method in the class are selected from said selected source code files. The tool generates a Call Tree as an ordered recursive sequence of all method calls in different classes or their instances that are invoked by said selected method in said selected class. A Sequence Diagram is generated from said Call Tree. The tool remembers all updates to the Call Tree used to generate the Sequence Diagram. This information is used when a generated Sequence Diagram is impacted due to changes made to any source code file included in the project.
    Type: Grant
    Filed: January 7, 2009
    Date of Patent: May 1, 2012
    Assignee: International Business Machines Corporation
    Inventors: Kapil Bhandari, Divya Bharti, Kallol Pal
  • Publication number: 20120102474
    Abstract: Systems and methods are provided for statically analyzing a software application that is based on at least one framework. According to the method, source code of the software application and a specification associated with the software application are analyzed. The specification includes a list of synthetic methods that model framework-related behavior of the software application, and a list of entry points indicating the synthetic methods and/or application methods of the software application that can be invoked by the framework. Based on the source code and the specification, intermediate representations for the source code and the synthetic methods are generated. Based on the intermediate representations and the specification, call graphs are generated to model which application methods of the software application invoke synthetic methods or other application methods of the software application.
    Type: Application
    Filed: October 26, 2010
    Publication date: April 26, 2012
    Applicant: International Business Machines Corporation
    Inventors: Shay Artzi, Ryan Berg, Yinnon A. Haviv, John T. Peyton, JR., Marco Pistoia, Manu Sridharan, Babita Sharma, Omri Weisman, Robert Wiener
  • Publication number: 20120079468
    Abstract: The analysis of an intermediate representation of source or program code. An initial version of an initial representation of the source or program code is accessed and statically analyzed. For one or more portions of this initial version, the analysis component queries an analysis-time resolution component that provides supplemental intermediate representations corresponding to the portion. This supplemental intermediate representation provides further clarity regarding the portion, and is analyzed. If defects are found, they may be reported.
    Type: Application
    Filed: September 28, 2010
    Publication date: March 29, 2012
    Applicant: MICROSOFT CORPORATION
    Inventors: Anna Gringauze, Henning Korsholm Rohde
  • Patent number: 8146069
    Abstract: The invention includes a method and apparatus for upgrading software represented as a graph, where the graph has a plurality of states and a plurality of state transitions and tokens traverse the graph executing functions. A method includes identifying a target region of the graph, obtaining a new region for the graph, determining a correspondence between states of the target region of the graph and states of the new region for the graph, and replacing the target region of the graph with the new region for the graph using the correspondence between states of the target region of the graph and states of the new region for the graph. The target region of the graph may be replaced by suspending the operation of the target region of the graph, or while the target region of the graph continues running.
    Type: Grant
    Filed: September 27, 2007
    Date of Patent: March 27, 2012
    Assignee: Alcatel Lucent
    Inventors: John H. Shamilian, Thomas L. Wood
  • Patent number: 8146070
    Abstract: Inter-procedural strength reduction is provided by a mechanism of the present invention to optimize software program. During a forward pass, the present invention collects information of global variables and analyzes the information to select candidate computations for optimization. During a backward pass, the present invention replaces costly computations with less costly or weaker computations using pre-computed values and inserts store operations of new global variables to pre-compute the costly computations at definition points of the global variables used in the costly computations.
    Type: Grant
    Filed: November 13, 2008
    Date of Patent: March 27, 2012
    Assignee: International Business Machines Corporation
    Inventors: Roch Georges Archambault, Shimin Cui, Raul Esteban Silvera
  • Patent number: 8146055
    Abstract: A software tool is provided to analyze static source code. Source Code files are selected to define the project work space. A class and a method in the class are selected from said selected source code files. The tool generates a Call Tree as an ordered recursive sequence of all method calls in different classes or their instances that are invoked by said selected method in said selected class. A Sequence Diagram is generated from said Call Tree. The tool remembers all updates to the Call Tree used to generate the Sequence Diagram. This information is used when a generated Sequence Diagram is impacted due to changes made to any source code file included in the project.
    Type: Grant
    Filed: April 18, 2008
    Date of Patent: March 27, 2012
    Assignee: International Business Machines Corporation
    Inventors: Kapil Bhandari, Divya Bharti, Kallol Pal
  • Patent number: 8141073
    Abstract: A software tool is provided to analyze static source code. Source Code files are selected to define the project work space. A class and a method in the class are selected from said selected source code files. The tool generates a Call Tree as an ordered recursive sequence of all method calls in different classes or their instances that are invoked by said selected method in said selected class. A Sequence Diagram is generated from said Call Tree. The tool remembers all updates to the Call Tree used to generate the Sequence Diagram. This information is used when a generated Sequence Diagram is impacted due to changes made to any source code file included in the project.
    Type: Grant
    Filed: April 10, 2008
    Date of Patent: March 20, 2012
    Assignee: International Business Machines Corporation
    Inventors: Kapil Bhandari, Divya Bharti, Kallol Pal
  • 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: 8141054
    Abstract: A method, an information processing system, and a computer readable medium, are used to detect atomic-set serializability violations in an execution of a program. A set of classes associated with a program to be analyzed is identified. The set of classes include a set of fields. At least one subset of fields in the set of fields in the identified classes is selected. A set of code fragments associated with an execution of the program is selected. Data accesses in the selected set of code fragments are observed. It is determined if the selected set of code fragments is serializable for each selected subset of fields.
    Type: Grant
    Filed: August 8, 2007
    Date of Patent: March 20, 2012
    Assignee: International Business Machines Corporation
    Inventors: Julian T. Dolby, Christian J. Hammer, Frank Tip, Mandana Vaziri-Farahani
  • Patent number: 8141065
    Abstract: The invention includes a method and apparatus for dynamically defining and instantiating an undefined portion of a graph, where the graph has a plurality of states and a plurality of state transitions. A method includes executing the graph where the graph comprises a defined portion and an undefined portion and a plurality of tokens traverse the graph executing functions, suspending the one of the tokens in response to the one of the tokens detecting the undefined portion of the graph, generating a new portion of the graph for the undefined portion of the graph, replacing the undefined portion of the graph with the new portion of the graph, and releasing the suspended token. The new portion of the graph is generated by generating at least one definition file for the undefined portion of the graph and executing the at least one definition file to form thereby the new portion of the graph.
    Type: Grant
    Filed: September 27, 2007
    Date of Patent: March 20, 2012
    Assignee: Alcatel Lucent
    Inventors: John H. Shamilian, Thomas L. Wood
  • Patent number: 8132156
    Abstract: Embodiments of the present invention provide a multi-input comparative testing tool. The present invention looks at the internal structure of the software being tested and compares the two pairs of internal structures. In the present invention, the testing tool is capable of receiving multiple program code files or data files as its input. For each program code file, the testing tool generates a collection of problem objects and compares pairs of the problem collections with each other. The present invention may also run on data files having program code. For example, the present invention is capable of testing extensible markup language (XML) files to determine if they validate against a schema. Problem objects that are in both collections are identified and set aside. The remaining problem objects are then marked either as being resolved or new depending in which collection they exist.
    Type: Grant
    Filed: June 14, 2007
    Date of Patent: March 6, 2012
    Assignee: Red Hat, Inc.
    Inventor: David H. Malcolm
  • Patent number: 8120610
    Abstract: A system traverses a directed cyclic graph to discover a relationship between a first object and a second object, and creates an alias. The alias represents the second object. The system replaces the relationship between the first object and the second object with the created alias, and creates a reference from the first object to the alias.
    Type: Grant
    Filed: March 15, 2006
    Date of Patent: February 21, 2012
    Assignee: Adobe Systems Incorporated
    Inventor: Norman A. Stratton
  • 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
  • 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
  • Publication number: 20110321021
    Abstract: Mechanisms are provided for arranging binary code to reduce instruction cache conflict misses. These mechanisms generate a call graph of a portion of code. Nodes and edges in the call graph are weighted to generate a weighted call graph. The weighted call graph is then partitioned according to the weights, affinities between nodes of the call graph, and the size of cache lines in an instruction cache of the data processing system, so that binary code associated with one or more subsets of nodes in the call graph are combined into individual cache lines based on the partitioning. The binary code corresponding to the partitioned call graph is then output for execution in a computing device.
    Type: Application
    Filed: June 25, 2010
    Publication date: December 29, 2011
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Tong Chen, Brian Flachs, Brad W. Michael, Mark R. Nutter, John K.P. O'Brien, Kathryn M. O'Brien, Tao Zhang
  • Publication number: 20110258617
    Abstract: In one embodiment, a method for call graph analysis is provided. The method includes determining a plurality of nodes in a call graph. The plurality of nodes represent resource consumption of functions of a software program executed in a software system. A simplification factor is determined. A first set of nodes in the plurality of nodes is then eliminated based on exclusive values for the plurality of nodes, inclusive values for the plurality of nodes, and the simplification factor. An inclusive value for a node is a first amount of resources consumed by the node and any descendent nodes of that node. An exclusive value for the node is a second amount of resources consumed by the node. A simplified call graph is output including a second set of nodes in the plurality of nodes. The second set of nodes does not include the eliminated first set of nodes.
    Type: Application
    Filed: April 19, 2010
    Publication date: October 20, 2011
    Applicant: SAP AG
    Inventors: CHEOLMAN PARK, CHAN YOUNG
  • Publication number: 20110239203
    Abstract: A computer-implemented method for evaluating a machine-executable software code specification includes using the computer to generate a system dependence graph corresponding to the software code specification. The system dependence graph includes elements including nodes and edges. The computer evaluates the system dependence graph including selecting a variable modified in the software code specification, providing a control operation node of the system dependence graph corresponding to a control statement in the software code specification with a preferred calibration state, traversing to selected elements of the system dependence graph wherein the selected elements are associated with the selected variable and the preferred calibration state of the control operation node, evaluating only the selected elements of the system dependence graph, and identifying ones of the selected elements whereat a state of the selected variable is modified.
    Type: Application
    Filed: March 29, 2010
    Publication date: September 29, 2011
    Applicant: GM GLOBAL TECHNOLOGY OPERATIONS, INC.
    Inventors: Srihari Sukumaran, Ramesh Sethu
  • Publication number: 20110239204
    Abstract: A computer-implemented method for evaluating a machine-executable software code specification includes using the computer to generate a system dependence graph corresponding to the software code specification. The system dependence graph includes elements including nodes and edges, wherein the computer evaluates the system dependence graph. The evaluation of the system dependence graph includes selecting a variable modified in the software code specification, traversing to selected elements of the system dependence graph, the selected elements associated with the selected variable, evaluating only the selected elements of the system dependence graph, and identifying ones of the selected elements whereat a state of the selected variable is modified.
    Type: Application
    Filed: March 29, 2010
    Publication date: September 29, 2011
    Applicant: GM GLOBAL TECHNOLOGY OPERATIONS, INC.
    Inventors: Srihari Sukumaran, Ramesh Sethu
  • Patent number: 8015551
    Abstract: The software operation modeling device includes a function call order obtaining unit and a model generator. The function call order obtaining unit obtains or estimates an issuing order of function calls executed in each of specific events in the course of executing software. The model generator statistically grasps a co-occurrence relationship between the specific event and the issuing order of the function calls obtained or estimated by the function call order obtaining unit, and to record the grasped co-occurrence relationship as an operation model of the software.
    Type: Grant
    Filed: November 27, 2006
    Date of Patent: September 6, 2011
    Assignee: NTT DoCoMo, Inc.
    Inventors: Akira Kinno, Takehiro Nakayama
  • 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: 7962924
    Abstract: A system and method for Java™ call stack sampling combined with native sampling is presented. A kernel-mode device driver records and stores sampled context information that includes a program counter, a thread identifier, and a process identifier. The sampling thread receives a notification from the kernel-mode device driver, and proceeds to collect call stack information from a Java™ Virtual Machine. In turn, the sampling thread retrieves the sampled context information and harvests symbols corresponding to a loaded module. Once symbols are harvested, the sampling thread combines returned call stack nodes with native function leaf nodes into a unified output tree that provides the relationship between the two different node types. In one embodiment, the sampling thread may generate native function leaf nodes and the unified output tree in a post-processing manner.
    Type: Grant
    Filed: June 7, 2007
    Date of Patent: June 14, 2011
    Assignee: International Business Machines Corporation
    Inventors: Kean G. Kuiper, Frank Eliot Levine, Enio Manuel Pineda
  • Publication number: 20110138373
    Abstract: The disclosed embodiments provide a system that globally optimizes instruction code. During operation, the system obtains the instruction code, wherein the instruction code was previously generated from the source code, and wherein the instruction code is stored along with symbol table information. Next, the system constructs a symbol table from the symbol table information stored along with the instruction code. The system then creates a data structure for the instruction code, wherein the data structure contains a call graph for the instruction code, and wherein creating the data structure involves accessing the symbol table. Finally, the system performs optimizations on the instruction code to produce optimized instruction code, wherein performing the optimizations involves accessing the data structure.
    Type: Application
    Filed: December 8, 2010
    Publication date: June 9, 2011
    Applicant: AMERICAN NATIONAL LABORATORIES, INC.
    Inventors: Robert M. Lane, Akiko Kobiyashi, John Drake
  • Patent number: 7941794
    Abstract: A data flow graph processing method divides a program describing target operations into two or more subprograms and converts each of the two or more subprograms into a data flow graph (DFG) representing dependency in execution between operations carried out in sequence. Also generated is flow data indicating the order of execution of DFGs corresponding to respective subprograms. DFGs are converted into configuration data and the flow data is converted into control data.
    Type: Grant
    Filed: August 29, 2005
    Date of Patent: May 10, 2011
    Assignee: Sanyo Electric Co., Ltd.
    Inventors: Makoto Ozone, Hiroshi Nakajima, Tatsuo Hiramatsu, Katsunori Hirase, Makoto Okada
  • Publication number: 20110107316
    Abstract: An illustrative embodiment provides a computer-implemented process for algorithm complexity identification through inter-procedural data flow analysis receives a call graph to form a set of received nodes in a static analysis framework, identifies a parent node in the set of received nodes to form an identified parent, traverses the call graph from the identified parent node to a node to identify a function within the node to form an identified function. Each identified function is analyzed to form a complexity value in a set of complexity values. Responsive to a determination that node analysis is complete, and responsive to a determination that path analysis is complete, determines whether path analysis for the identified parent is complete. Responsive to a determination that path analysis for the identified parent is complete, sum the complexity values in the set of complexity values for the identified parent and return the complexity value for the identified parent to a requester.
    Type: Application
    Filed: November 2, 2010
    Publication date: May 5, 2011
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: STEVEN J. GUTZ, MOHAMMED MOSTAFA, JOSHUA P. TESSIER
  • Patent number: 7930687
    Abstract: Described herein is an implementation for exposing an “execution context” to a logical execution flow of procedures as it executes. An “execution context” is a set of data and/or sub-procedures that might be useful at some point during a logical execution flow (to manage and control the execution flow and provide additional services to the execution flow) of computer-executable instructions though the often complex, intertwined, and interconnected conglomeration of procedures of software product(s).
    Type: Grant
    Filed: November 24, 2008
    Date of Patent: April 19, 2011
    Assignee: Microsoft Corporation
    Inventors: Arun Moorthy, Christopher W. Brumme, Jonathan C. Hawkins, Raja Krishnaswamy
  • Patent number: 7926048
    Abstract: Embodiments of the present invention provide for minimizing the number of procedure frame unwinding operations to be performed when restoring the program control flow information. A first data structure may be constructed to contain procedure linkage information along with references to the conventional memory area where each procedure linkage information element (procedure return address or a procedure frame pointer) was originally found. The first data structure may be initialized upon the initial request for program control flow information. Upon each subsequent request, the contents of the conventional memory area as referenced by the first data structure may be compared with the corresponding elements of the first data structure. As a result of said comparison, changed and unchanged regions within the conventional memory area may be determined. Then, procedure frame unwinding operations may be performed for the changed regions.
    Type: Grant
    Filed: July 26, 2006
    Date of Patent: April 12, 2011
    Assignee: Intel Corporation
    Inventor: Stanislav V. Bratanov
  • Patent number: 7926043
    Abstract: The described technology provides data structure path profiling. An instrumented version of a program is created that calls a profiler runtime when pointer based data structures are allocated or accessed via pointers. A model of the heap is created and nodes in the model data structures are assigned unique identifiers. Paths traversed through the model data structures are assigned unique identifiers. The paths are counted in order to identify paths through the data structure model that are traversed frequently. The model is useful for providing information about high frequency data paths to the program developer and for various optimization purposes, such as prefetching and or increasing data locality during garbage collection.
    Type: Grant
    Filed: June 20, 2006
    Date of Patent: April 12, 2011
    Assignee: Microsoft Corporation
    Inventors: Kapil Vaswani, Trishul Chilimbi
  • Patent number: 7926037
    Abstract: A program verification process begins by converting a language of the program from a first language into an intermediate language representation. The loops of the program are eliminated. The program is converted from the intermediate language representation into a passive form. Dominators for the passive form of the program are determined. A verification condition is generated from the passive form of the program. The verification condition is structured according to the computed dominators such that when a theorem prover identifies a potential error, portions of the passive form of the program irrelevant to the potential error are ignored.
    Type: Grant
    Filed: January 19, 2006
    Date of Patent: April 12, 2011
    Assignee: Microsoft Corporation
    Inventors: K. Rustan M. Leino, Michael Barnett
  • Patent number: 7904892
    Abstract: Systems and methods are provided for identifying and displaying dependencies. One aspect of the invention comprises a system having a dependency parser that parses components of a system with dependencies and generates a plurality of component dependency pairs associated with the components, and a component dependency graph generator that generates a dependency directed graph from the plurality of dependency pairs. The system further includes a component levels and cycles analyzer that traverses the dependency directed graph to identify dependencies, strong components and component dependency levels associated with the dependency directed graph, and a graphical user interface that provides a tree view illustrating a dependency tree of the identified dependencies over the identified component dependency levels.
    Type: Grant
    Filed: January 6, 2006
    Date of Patent: March 8, 2011
    Assignee: Northrop Grumman Corporation
    Inventors: Robert G. Babb, II, Michael H. Parry, Jason S. Byassee, Ted L. Meyers, David R. Mooney
  • Patent number: 7886283
    Abstract: An alternative to a real time operating system (RTOS) is provided based on serializing compilers. A serializing compiler can transform a multitasking application into an equivalent and optimized monolithic sequential code, to be compiled with the embedded processor's native optimizing compiler, effectively filling the RTOS gap. The serializing compiler can analyze the tasks at compile time and generate a fine-tuned, application specific infrastructure to support multitasking, resulting in a more efficient executable than one that is intended to run on top of a generic RTOS. By having control over the application execution and context switches, the serializing compiler enables the fine grain control of task timing while enhancing overall performance. The serializing compiler technology strengthens existing compilers, making them timing and task-aware.
    Type: Grant
    Filed: September 14, 2005
    Date of Patent: February 8, 2011
    Assignee: The Regents of the University of California
    Inventors: Andre Nacul, Tony Givargis
  • Patent number: 7865872
    Abstract: A method and apparatus for providing native undo, redo, and abort execution abilities of a runtime is disclosed. In one embodiment, a system includes a runtime to execute object-oriented source code with producer dependency declarations for methods, wherein a producer is a runtime instantiatable construct that includes at least an instance and a method associated with that instance, wherein each producer dependency declaration for a given method identifies a set of zero or more producers with outputs that are an input to the given method. According to one embodiment of the invention, the runtime includes a client code tracking module to track the client code commands being run by the runtime. Furthermore, in one embodiment, the runtime also includes a runtime tracking module to track processes of the runtime performed in response to the client code commands being tracked and run by the runtime.
    Type: Grant
    Filed: December 1, 2006
    Date of Patent: January 4, 2011
    Assignee: Murex S.A.S.
    Inventors: Fady Chamieh, Elias Eddé