Patents by Inventor Amitabh Srivastava

Amitabh Srivastava has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Patent number: 7496904
    Abstract: Programs are rarely self-contained in software environments. They depend on other programs or shared subsystems like language run time and operating system libraries for various functionalities. A change in one of the external subsystems may affect the program and one or more other external subsystems. A method or system collects and propagates information about dependency between logical abstractions within a binary file (e.g., basic block, procedure, etc.), dependency between binary files, and dependency between subsystems (e.g., programs, component libraries, system services, etc,) In one example, such dependency information is exposed to a tool (e.g., test tool, software development tool, etc.) via an application programming interface. A tool mines this information to manage testing, determine risks of change, or manage software development. The tool may also be integrated into the method or system.
    Type: Grant
    Filed: June 26, 2003
    Date of Patent: February 24, 2009
    Assignee: Microsoft Corporation
    Inventors: Amitabh Srivastava, Jayaraman Thiagarajan
  • Patent number: 7197748
    Abstract: Each component binary in a heterogeneous program is translated from a platform-specific instruction set into a set of intermediate representation (IR) instructions that are platform-neutral. The IR instructions are grouped into IR code blocks, the IR code blocks into IR procedures, and the IR procedures into IR components to create an intermediate representation hierarchy for the program. An application program interface is provided that permits user access to the IR hierarchy for instrumentation, optimization, navigation, and manipulation of the IR hierarchy. The transformed IR hierarchy is then translated into platform-specific instructions and output as a modified binary. The user can designate a different platform for the output translation of a code block than the platform for which the code block was originally written. Prologue and epilog code is added to contiguous blocks that are translated into different architectures.
    Type: Grant
    Filed: August 4, 2004
    Date of Patent: March 27, 2007
    Assignee: Microsoft Corporation
    Inventors: Ronnie I. Chaiken, Hon Keat W. Chan, Andrew J. Edwards, Gregory A. Eigsti, David M. Gillies, Bruce M. Kuramoto, John A. Lefor, Ken B. Pierce, Amitabh Srivastava, Hoi H. Vo, Gideon A. Yuval
  • Publication number: 20060129994
    Abstract: A computer system and method is provided for prioritizing software tests. Software tests are prioritized based on coverage indicators for the software tests and an indication of impacted areas of the software. Each of the coverage indicators indicates which portions of the software are executed for a respective one of the software tests. The portions of the software include at least one of a plurality of blocks. The indication of impacted areas of the software indicates ones of the plurality of blocks that are modified or new with respect to a previous version of the software. A prioritized list of software tests is output. The prioritized list includes at least one test sequence.
    Type: Application
    Filed: January 12, 2006
    Publication date: June 15, 2006
    Applicant: MICROSOFT CORPORATION
    Inventors: Amitabh Srivastava, Jayaraman Thiagarajan
  • Patent number: 7028290
    Abstract: A computer system and method is provided for prioritizing software tests. Software tests are prioritized based on coverage indicators for the software tests and an indication of impacted areas of the software. Each of the coverage indicators indicates which portions of the software are executed for a respective one of the software tests. The portions of the software include at least one of a plurality of blocks. The indication of impacted areas of the software indicates ones of the plurality of blocks that are modified or new with respect to a previous version of the software. A prioritized list of software tests is output. The prioritized list includes at least one test sequence.
    Type: Grant
    Filed: April 29, 2002
    Date of Patent: April 11, 2006
    Assignee: Microsoft Corporation
    Inventors: Amitabh Srivastava, Jayaraman Thiagarajan
  • Publication number: 20050010891
    Abstract: Each component binary in a heterogeneous program is translated from a platform-specific instruction set into a set of intermediate representation (IR) instructions that are platform-neutral. The IR instructions are grouped into IR code blocks, the IR code blocks into IR procedures, and the IR procedures into IR components to create an intermediate representation hierarchy for the program. An application program interface is provided that permits user access to the IR hierarchy for instrumentation, optimization, navigation, and manipulation of the IR hierarchy. The transformed IR hierarchy is then translated into platform-specific instructions and output as a modified binary. The user can designate a different platform for the output translation of a code block than the platform for which the code block was originally written. Prologue and epilog code is added to contiguous blocks that are translated into different architectures.
    Type: Application
    Filed: August 4, 2004
    Publication date: January 13, 2005
    Applicant: Microsoft Corporation
    Inventors: Ronnie Chaiken, Hon Keat Chan, Andrew Edwards, Gregory Eigsti, David Gillies, Bruce Kuramoto, John Lefor, Ken Pierce, Amitabh Srivastava, Hoi Vo, Gideon Yuval
  • Publication number: 20040268308
    Abstract: Programs are rarely self-contained in software environments. They depend on other programs or shared subsystems like language run time and operating system libraries for various functionalities. A change in one of the external subsystems may affect the program and one or more other external subsystems.
    Type: Application
    Filed: June 26, 2003
    Publication date: December 30, 2004
    Applicant: Microsoft Corporation
    Inventors: Amitabh Srivastava, Jayaraman Thiagarajan
  • Publication number: 20040268302
    Abstract: Programs are rarely self-contained in software environments. They depend on other programs or shared subsystems like language run time and operating system libraries for various functionalities. A change in one of the external subsystems may affect the program and one or more other external subsystems.
    Type: Application
    Filed: August 8, 2003
    Publication date: December 30, 2004
    Applicant: Microsoft Corporation
    Inventors: Amitabh Srivastava, Jayaraman Thiagarajan
  • Patent number: 6802056
    Abstract: Each component binary in a heterogeneous program is translated from a platform-specific instruction set into a set of intermediate representation (IR) instructions that are platform-neutral. The IR instructions are grouped into IR code blocks, the IR code blocks into IR procedures, and the IR procedures into IR components to create an intermediate representation hierarchy for the program. An application program interface is provided that permits user access to the IR hierarchy for instrumentation, optimization, navigation, and manipulation of the IR hierarchy. The transformed IR hierarchy is then translated into platform-specific instructions and output as a modified binary. The user can designate a different platform for the output translation of a code block than the platform for which the code block was originally written. Prologue and epilog code is added to contiguous blocks that are translated into different architectures.
    Type: Grant
    Filed: June 30, 1999
    Date of Patent: October 5, 2004
    Assignee: Microsoft Corporation
    Inventors: Ronnie I. Chaiken, Hon Keat W. Chan, Andrew J. Edwards, Gregory A. Eigsti, David M. Gillies, Bruce M. Kuramoto, John A. Lefor, Ken B. Pierce, Amitabh Srivastava, Hoi H. Vo, Gideon A. Yuval
  • Patent number: 6662356
    Abstract: An application program interface (API) into an hierarchical intermediate representation (IR) of a heterogeneous program enables the navigation and modification of the IR at all levels of the hierarchy. Additional functions provide information about the IR that can be employed by a user in understanding the logic flow of the program and by an output translator to convert the IR into blocks of platform-specific instructions for a new version of the heterogeneous program. The API functions are also utilized by pre-defined program tools to instrument and optimize the IR, and thus the heterogeneous program created from the IR.
    Type: Grant
    Filed: June 30, 1999
    Date of Patent: December 9, 2003
    Assignee: Microsoft Corporation
    Inventors: Andrew J. Edwards, Ken B. Pierce, Amitabh Srivastava
  • Publication number: 20030204836
    Abstract: A computer system and method is provided for prioritizing software tests. Software tests are prioritized based on coverage indicators for the software tests and an indication of impacted areas of the software. Each of the coverage indicators indicates which portions of the software are executed for a respective one of the software tests. The portions of the software include at least one of a plurality of blocks. The indication of impacted areas of the software indicates ones of the plurality of blocks that are modified or new with respect to a previous version of the software. A prioritized list of software tests is output. The prioritized list includes at least one test sequence.
    Type: Application
    Filed: April 29, 2002
    Publication date: October 30, 2003
    Applicant: MICROSOFT CORPORATION
    Inventors: Amitabh Srivastava, Jayaraman Thiagarajan
  • Patent number: 6609248
    Abstract: An output translator provides for cross module representations of components within a heterogeneous program by translating modifying a platform-neutral intermediate representation (IR) of the program into platform-specific instructions for different architectures. The intermediate representation is hierarchy of base elements that correspond to instructions, code blocks, procedures and components within the program. Blocks of instructions that were originally written for one architecture can be translated from the intermediate representation into platform-specific instructions for a different architecture. The output translator provides any necessary code to interface contiguous code blocks that are emitted in different instruction sets.
    Type: Grant
    Filed: June 30, 1999
    Date of Patent: August 19, 2003
    Assignee: Microsoft Corporation
    Inventors: Amitabh Srivastava, Hoi H. Vo
  • Patent number: 6481008
    Abstract: Pre-defined performance tools enable instrumentation and optimization of a heterogeneous program by modifying a platform-neutral intermediate representation (IR) of the program. The intermediate representation is hierarchy of base elements that correspond to instructions, code blocks, procedures and components within the program. Each base element exports an application program interface that provides for navigation, querying and modification of the corresponding element in the hierarchy. An application program interface for the entire intermediate representation includes the application program interfaces for the individual elements along with additional functionality. A user can request instrumentation and optimization of any level of the intermediate representation hierarchy and the performance tools perform the required modifications to the intermediate representation.
    Type: Grant
    Filed: June 30, 1999
    Date of Patent: November 12, 2002
    Assignee: Microsoft Corporation
    Inventors: Ronnie I. Chaiken, Andrew J. Edwards, John A. Lefor, Jiyang Liu, Ken B. Pierce, Amitabh Srivastava, Hoi H. Vo
  • Patent number: 6460178
    Abstract: A shared library optimization process relocates a code block in a platform-neutral intermediate representation (IR) of a library into the IR of another library. The shared library optimization process preserves the original control flow that passed through the relocated code block using forwarding pointers and address substitution. The shared library optimization process can also relocate code blocks from multiple shared libraries into an existing shared library, or from one shared library into an empty shared library. The shared libraries to be optimized are specified by a user, as is the type of optimization to be performed.
    Type: Grant
    Filed: June 30, 1999
    Date of Patent: October 1, 2002
    Assignee: Microsoft Corporation
    Inventors: Hon Keat W. Chan, Andrew J. Edwards, Amitabh Srivastava, Hoi H. Vo
  • Patent number: 5999737
    Abstract: A computer system is directed to convert a program written as a plurality of high level source code modules into corresponding machine executable code. The source code modules are compiled into an object code module, and the object code modules are translated into a single linked code module in the form of a register translation language and logical symbol table compatible with a plurality of computer system hardware architectures. The source code program structures are recovered from the linked code module, and the linked code module is partitioned into a plurality of procedure, and instructions of each of the procedures grouped into basic blocks. A procedure flow graph is constructed for each of the procedures, and a program call graph is constructed for the linked code module. The linked code module is modified by eliminating dead code and moving loop-invariant code from loops.
    Type: Grant
    Filed: November 3, 1997
    Date of Patent: December 7, 1999
    Assignee: Digital Equipment Corporation
    Inventor: Amitabh Srivastava
  • Patent number: 5966539
    Abstract: A computer system is directed to convert a program written as a plurality of high level source code modules into corresponding machine executable code. The source code modules are compiled into an object code module, and the object code modules are translated into a single linked code module in the form of a register translation language and logical symbol table compatible with a plurality of computer system hardware architectures. The source code program structures are recovered from the linked code module, and the linked code module is partitioned into a plurality of procedure, and instructions of each of the procedures grouped into basic blocks. A procedure flow graph is constructed for each of the procedures, and a program call graph is constructed for the linked code module. The linked code module is modified by eliminating dead code and moving loop-invariant code from loops.
    Type: Grant
    Filed: November 3, 1997
    Date of Patent: October 12, 1999
    Assignee: Digital Equipment Corporation
    Inventor: Amitabh Srivastava
  • Patent number: 5963740
    Abstract: A program for monitoring computer system performance includes a collection of source code modules in the form of a high level language. Each of the source code modules is compiled into a corresponding object code module. The object code modules are assembled into machine dependent code. The machine code is translated into a program module in the form of a machine independent register translation language. The program module is partitioned into basic program components. The basic program components include procedures, basic blocks within procedures, and instructions within basic blocks. Fundamental instrumentation routines identify, locate, and modify specific program components to be monitored. The modified basic program components are converted to an instrumented machine executable code to be executed in the computer system so that performance data can be collected while the program is executing in the computer.
    Type: Grant
    Filed: November 21, 1997
    Date of Patent: October 5, 1999
    Assignee: Digital Equipment Corporation
    Inventors: Amitabh Srivastava, Robert Alan Eustace
  • Patent number: 5732273
    Abstract: A program for monitoring computer system performance includes a collection of source code modules in the form of a high level language. Each of the source code modules is compiled into a corresponding object code module. The object code modules are assembled into machine dependent code. The machine code is translated into a program module in the form of a machine independent register translation language. The program module is partitioned into basic program components. The basic program components include procedures, basic blocks within procedures, and instructions within basic blocks. Fundamental instrumentation routines identify, locate, and modify specific program components to be monitored. The modified basic program components are converted to an instrumented machine executable code to be executed in the computer system so that performance dam can be collected while the program is executing in the computer.
    Type: Grant
    Filed: January 3, 1997
    Date of Patent: March 24, 1998
    Assignee: Digital Equipment Corporation
    Inventors: Amitabh Srivastava, Robert Alan Eustace
  • Patent number: 5539907
    Abstract: A program for monitoring computer system performance includes a collection of source code modules in the form of a high level language. Each of the source code modules is compiled into a corresponding object code module. The object code modules are translated into a single linked code module in the form of a machine independent register transfer language. The linked code module is partitioned into basic program components. The basic program components include procedures, basic blocks within procedures, and instructions within basic blocks. Fundamental instrumentation routines identify, locate, and modify specific program components to be monitored. The modified linked code module is converted to machine executable code to be executed in the computer system so that performance data can be collected while the program is executing in the computer.
    Type: Grant
    Filed: March 1, 1994
    Date of Patent: July 23, 1996
    Assignee: Digital Equipment Corporation
    Inventors: Amitabh Srivastava, Robert A. Eustace
  • Patent number: 5457799
    Abstract: In a method for optimizing loops of a program, the program is partitioned into a plurality of procedures, each procedure including instructions related for execution. A program call graph is constructed for the program, the call graph indicating the flow of execution among the several procedures. A specific one of the procedures is identified as a dominating procedure if the specific procedure is executed more than once. Procedures called from the dominating procedure are identified as descendant procedures. The descendent and dominating procedures are designated as a loop region. Any of the descendant procedure which are called by any of procedures of the program other than the dominating procedure and the descendant procedure are identified as step procedures. Step procedures are removed from the loop region. Instructions of the loop region that do not change the execution state of the computer are removed from the loop region in a sequence as determined by the frequency of execution of such instructions.
    Type: Grant
    Filed: March 1, 1994
    Date of Patent: October 10, 1995
    Assignee: Digital Equipment Corporation
    Inventor: Amitabh Srivastava