Using Procedure Or Function Call Graph Patents (Class 717/157)
-
Publication number: 20130061215Abstract: 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: ApplicationFiled: September 2, 2011Publication date: March 7, 2013Applicant: MICROSOFT CORPORATIONInventors: Patrick Sathyanathan, Ten Tzen
-
Patent number: 8392013Abstract: 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: GrantFiled: January 27, 2006Date of Patent: March 5, 2013Assignee: Microgen Aptitude LimitedInventors: Neil Thomson, Grzegorz R. Pusz
-
Patent number: 8370821Abstract: 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: GrantFiled: August 21, 2007Date of Patent: February 5, 2013Assignee: International Business Machines CorporationInventors: Gad Haber, Roy Levin, Shmuel Ur
-
Patent number: 8359584Abstract: 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: GrantFiled: December 18, 2009Date of Patent: January 22, 2013Assignee: Microsoft CorporationInventors: Abhijit Rao, Steven J. Steiner
-
Patent number: 8359588Abstract: 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: GrantFiled: November 25, 2009Date of Patent: January 22, 2013Assignee: Arm LimitedInventor: Alastair David Reid
-
Patent number: 8347273Abstract: 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: GrantFiled: October 9, 2008Date of Patent: January 1, 2013Assignee: International Business Machines CorporationInventors: Prashanth K. Nageshappa, Prasanna K. Kalle, Venkataraghavan Lakshminarayanachar
-
Patent number: 8332833Abstract: 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: GrantFiled: June 4, 2007Date of Patent: December 11, 2012Assignee: International Business Machines CorporationInventors: Roch Georges Archambault, Shimin Cui, Yaoqing Gao, Raul Esteban Silvera, Peng Zhao
-
Patent number: 8327325Abstract: 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: GrantFiled: January 14, 2009Date of Patent: December 4, 2012Assignee: International Business Machines CorporationInventors: I-Hsin Chung, Guojing Cong, David J. Klepacki, Simone Sbaraglia, Seetharami R. Seelam, Hui-Fang Wen
-
Patent number: 8327280Abstract: 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: GrantFiled: November 13, 2009Date of Patent: December 4, 2012Assignee: National Instruments CorporationInventor: Darren M. Nattinger
-
Patent number: 8302078Abstract: 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: GrantFiled: March 10, 2008Date of Patent: October 30, 2012Assignee: The Boeing CompanyInventors: Paul Zack Thunemann, Thomas A. Grandine, Jan H. Vandenbrande, Gregory Mikel Anderson
-
Patent number: 8281290Abstract: 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: GrantFiled: January 31, 2008Date of Patent: October 2, 2012Assignee: Alcatel LucentInventor: Gerald R. Thompson
-
Patent number: 8245020Abstract: 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: GrantFiled: May 12, 2009Date of Patent: August 14, 2012Assignee: Selectica, Inc.Inventor: Pravil Gupta
-
Publication number: 20120198429Abstract: 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: ApplicationFiled: April 12, 2012Publication date: August 2, 2012Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATIONInventors: Tong Chen, Brian Flachs, Brad W. Michael, Mark R. Nutter, John K.P. O'Brien, Kathryn M. O'Brien, Tao Zhang
-
Patent number: 8234636Abstract: 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: GrantFiled: September 12, 2006Date of Patent: July 31, 2012Assignee: International Business Machines CorporationInventors: Motohiro Kawahito, Hideaki Komatsu, Toshio Nakatani
-
Patent number: 8230411Abstract: 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: GrantFiled: June 13, 2000Date of Patent: July 24, 2012Inventors: Martin Vorbach, Armin Nückel
-
Patent number: 8214816Abstract: 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: GrantFiled: May 28, 2008Date of Patent: July 3, 2012Assignee: International Business Machines CorporationInventors: Tong Chen, John Kevin Patrick O'Brien, Kathryn O'Brien, Byoungro So, Zehra N. Sura, Tao Zhang
-
Patent number: 8214819Abstract: 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: GrantFiled: July 9, 2004Date of Patent: July 3, 2012Assignee: Hewlett-Packard Development Company, L.P.Inventor: David Mosberger
-
Patent number: 8214817Abstract: 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: GrantFiled: October 9, 2007Date of Patent: July 3, 2012Assignee: International Business Machines CorporationInventors: Bilha Mendelson, Nitzan Peleg
-
Publication number: 20120151462Abstract: 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: ApplicationFiled: December 13, 2010Publication date: June 14, 2012Inventors: Pramod G. Joisha, Robert Samuel Schreiber, Prithviraj Banerjee, Hans Boehm, Dhruva R. Chakrabarti
-
Patent number: 8171449Abstract: 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: GrantFiled: January 7, 2009Date of Patent: May 1, 2012Assignee: International Business Machines CorporationInventors: Kapil Bhandari, Divya Bharti, Kallol Pal
-
Publication number: 20120102474Abstract: 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: ApplicationFiled: October 26, 2010Publication date: April 26, 2012Applicant: International Business Machines CorporationInventors: Shay Artzi, Ryan Berg, Yinnon A. Haviv, John T. Peyton, JR., Marco Pistoia, Manu Sridharan, Babita Sharma, Omri Weisman, Robert Wiener
-
Publication number: 20120079468Abstract: 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: ApplicationFiled: September 28, 2010Publication date: March 29, 2012Applicant: MICROSOFT CORPORATIONInventors: Anna Gringauze, Henning Korsholm Rohde
-
Patent number: 8146069Abstract: 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: GrantFiled: September 27, 2007Date of Patent: March 27, 2012Assignee: Alcatel LucentInventors: John H. Shamilian, Thomas L. Wood
-
Patent number: 8146070Abstract: 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: GrantFiled: November 13, 2008Date of Patent: March 27, 2012Assignee: International Business Machines CorporationInventors: Roch Georges Archambault, Shimin Cui, Raul Esteban Silvera
-
Patent number: 8146055Abstract: 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: GrantFiled: April 18, 2008Date of Patent: March 27, 2012Assignee: International Business Machines CorporationInventors: Kapil Bhandari, Divya Bharti, Kallol Pal
-
Patent number: 8141073Abstract: 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: GrantFiled: April 10, 2008Date of Patent: March 20, 2012Assignee: International Business Machines CorporationInventors: Kapil Bhandari, Divya Bharti, Kallol Pal
-
Patent number: 8141064Abstract: 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: GrantFiled: December 11, 2008Date of Patent: March 20, 2012Assignee: Lantronix, Inc.Inventor: Timothy Chipman
-
Patent number: 8141054Abstract: 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: GrantFiled: August 8, 2007Date of Patent: March 20, 2012Assignee: International Business Machines CorporationInventors: Julian T. Dolby, Christian J. Hammer, Frank Tip, Mandana Vaziri-Farahani
-
Patent number: 8141065Abstract: 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: GrantFiled: September 27, 2007Date of Patent: March 20, 2012Assignee: Alcatel LucentInventors: John H. Shamilian, Thomas L. Wood
-
Patent number: 8132156Abstract: 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: GrantFiled: June 14, 2007Date of Patent: March 6, 2012Assignee: Red Hat, Inc.Inventor: David H. Malcolm
-
Patent number: 8120610Abstract: 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: GrantFiled: March 15, 2006Date of Patent: February 21, 2012Assignee: Adobe Systems IncorporatedInventor: Norman A. Stratton
-
Patent number: 8117606Abstract: 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: GrantFiled: June 4, 2007Date of Patent: February 14, 2012Assignee: Infosys Technologies Ltd.Inventors: Anirban Chakrabarti, Shubhashis Sengupta, Anish Damodaran
-
Patent number: 8099726Abstract: 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: GrantFiled: March 23, 2006Date of Patent: January 17, 2012Assignee: Microsoft CorporationInventor: Timothy Lawrence Harris
-
Publication number: 20110321021Abstract: 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: ApplicationFiled: June 25, 2010Publication date: December 29, 2011Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATIONInventors: Tong Chen, Brian Flachs, Brad W. Michael, Mark R. Nutter, John K.P. O'Brien, Kathryn M. O'Brien, Tao Zhang
-
Publication number: 20110258617Abstract: 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: ApplicationFiled: April 19, 2010Publication date: October 20, 2011Applicant: SAP AGInventors: CHEOLMAN PARK, CHAN YOUNG
-
Publication number: 20110239203Abstract: 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: ApplicationFiled: March 29, 2010Publication date: September 29, 2011Applicant: GM GLOBAL TECHNOLOGY OPERATIONS, INC.Inventors: Srihari Sukumaran, Ramesh Sethu
-
Publication number: 20110239204Abstract: 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: ApplicationFiled: March 29, 2010Publication date: September 29, 2011Applicant: GM GLOBAL TECHNOLOGY OPERATIONS, INC.Inventors: Srihari Sukumaran, Ramesh Sethu
-
Patent number: 8015551Abstract: 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: GrantFiled: November 27, 2006Date of Patent: September 6, 2011Assignee: NTT DoCoMo, Inc.Inventors: Akira Kinno, Takehiro Nakayama
-
Patent number: 8006233Abstract: 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: GrantFiled: February 21, 2007Date of Patent: August 23, 2011Assignee: International Business Machines CorporationInventors: Paolina Centonze, Marco Pistoia
-
Patent number: 7962924Abstract: 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: GrantFiled: June 7, 2007Date of Patent: June 14, 2011Assignee: International Business Machines CorporationInventors: Kean G. Kuiper, Frank Eliot Levine, Enio Manuel Pineda
-
Publication number: 20110138373Abstract: 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: ApplicationFiled: December 8, 2010Publication date: June 9, 2011Applicant: AMERICAN NATIONAL LABORATORIES, INC.Inventors: Robert M. Lane, Akiko Kobiyashi, John Drake
-
Patent number: 7941794Abstract: 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: GrantFiled: August 29, 2005Date of Patent: May 10, 2011Assignee: Sanyo Electric Co., Ltd.Inventors: Makoto Ozone, Hiroshi Nakajima, Tatsuo Hiramatsu, Katsunori Hirase, Makoto Okada
-
Publication number: 20110107316Abstract: 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: ApplicationFiled: November 2, 2010Publication date: May 5, 2011Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATIONInventors: STEVEN J. GUTZ, MOHAMMED MOSTAFA, JOSHUA P. TESSIER
-
Patent number: 7930687Abstract: 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: GrantFiled: November 24, 2008Date of Patent: April 19, 2011Assignee: Microsoft CorporationInventors: Arun Moorthy, Christopher W. Brumme, Jonathan C. Hawkins, Raja Krishnaswamy
-
Patent number: 7926048Abstract: 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: GrantFiled: July 26, 2006Date of Patent: April 12, 2011Assignee: Intel CorporationInventor: Stanislav V. Bratanov
-
Patent number: 7926043Abstract: 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: GrantFiled: June 20, 2006Date of Patent: April 12, 2011Assignee: Microsoft CorporationInventors: Kapil Vaswani, Trishul Chilimbi
-
Patent number: 7926037Abstract: 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: GrantFiled: January 19, 2006Date of Patent: April 12, 2011Assignee: Microsoft CorporationInventors: K. Rustan M. Leino, Michael Barnett
-
Patent number: 7904892Abstract: 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: GrantFiled: January 6, 2006Date of Patent: March 8, 2011Assignee: Northrop Grumman CorporationInventors: Robert G. Babb, II, Michael H. Parry, Jason S. Byassee, Ted L. Meyers, David R. Mooney
-
Patent number: 7886283Abstract: 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: GrantFiled: September 14, 2005Date of Patent: February 8, 2011Assignee: The Regents of the University of CaliforniaInventors: Andre Nacul, Tony Givargis
-
Patent number: 7865872Abstract: 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: GrantFiled: December 1, 2006Date of Patent: January 4, 2011Assignee: Murex S.A.S.Inventors: Fady Chamieh, Elias Eddé