Patents by Inventor Andrew E. Ayers

Andrew E. Ayers 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: 8250544
    Abstract: Annotation of exception information in a computer program. This annotation is not present in the source code itself, but is annotated during the compilation process or perhaps for purpose of analyzing the code. To perform the annotation, environmental rules are accessed regarding the environment in which the program is to be executed. The program is then evaluated in the context of these environmental rules to detect portions that, in the context of the environmental rules, may cause exceptions to be thrown. Those portions may then be annotated with exception information that describes any exceptions that could be thrown at that detected portion.
    Type: Grant
    Filed: March 5, 2008
    Date of Patent: August 21, 2012
    Assignee: Microsoft Corporation
    Inventors: Christopher M. McKinsey, Marko Krsta Radmilac, Charles L. Mitchell, Andrew E. Ayers, Louis Lafreniere
  • Patent number: 7823134
    Abstract: A computer method for issuing an early warning includes determining, using change and test coverage and control flow and data flow analyses of a program, locations in the program at which to insert early warning (EW) code to monitor for an event. The program is instrumented with EW code which monitors for the event, by inserting EW code at the determined locations. Upon detecting the event, EW code performs an early action warning, or issues an early action. Early warnings are issued when an EW-instrumented block is reached. Issuance of an early warning action can be conditional upon execution of the program in a particular environment, such as a production environment. Issuance of an EW can also be conditional upon executing an untested block of code that was recently modified.
    Type: Grant
    Filed: May 28, 2004
    Date of Patent: October 26, 2010
    Assignee: Symantec Operating Corporation
    Inventors: Anant Agarwal, Andrew E. Ayers, Richard Schooler
  • Publication number: 20090228869
    Abstract: Annotation of exception information in a computer program. This annotation is not present in the source code itself, but is annotated during the compilation process or perhaps for purpose of analyzing the code. To perform the annotation, environmental rules are accessed regarding the environment in which the program is to be executed. The program is then evaluated in the context of these environmental rules to detect portions that, in the context of the environmental rules, may cause exceptions to be thrown. Those portions may then be annotated with exception information that describes any exceptions that could be thrown at that detected portion.
    Type: Application
    Filed: March 5, 2008
    Publication date: September 10, 2009
    Applicant: Microsoft Corporation
    Inventors: Christopher M. McKinsey, Marko Krsta Radmilac, Charles L. Mitchell, Andrew E. Ayers, Louis Lafreniere
  • Patent number: 7543279
    Abstract: A program execution data trace is created by instrumenting a program to record value sets during execution and an instruction trace. By simulating instructions either backward or forward from a first instruction associated with a recorded value set to a second instruction according to the instruction trace, a value set is determined for the second instruction. Backward and forward simulation can be combined to complement each other. For backward simulation, a table of simulation instructions is preferably maintained, which associates program instructions encountered in the instruction trace with simulation instructions which reverse the operation of the associated program instructions. Preferably, one or more probes is inserted into the program to save values of particular variables whose value may be difficult to determine. Preferably, the instruction trace is displayed alongside and correlated with the data trace.
    Type: Grant
    Filed: May 25, 2004
    Date of Patent: June 2, 2009
    Assignee: Symantec Operating Corporation
    Inventors: Andrew E. Ayers, Richard Schooler, Anant Agarwal
  • Patent number: 7296261
    Abstract: A method for determining changed code in a second program binary relative to a first or baseline program binary, where the second program is a different version of the first program, includes translating, responsive to symbol tables and/or control flow representations, machine addresses of both program binaries to symbols. The first and second program binaries are disassembled using the translated symbols. Differences between the two resulting disassemblies are determined, and a list of the differences is created. Differences between the program binaries can be determined by textually comparing the disassemblies, or alternatively, by determining the differences between the control flow representations of the programs. The list of differences can be presented to a user, or alternatively, can be passed to another process for further processing, such as test coverage analysis, code change analysis, or failure analysis, among other analyses.
    Type: Grant
    Filed: June 4, 2004
    Date of Patent: November 13, 2007
    Assignee: VERITAS Operating Corporation
    Inventors: Emmett Witchel, Christopher D. Metcalf, Andrew E. Ayers
  • Publication number: 20040220774
    Abstract: A computer method for issuing an early warning includes determining, using change and test coverage and control flow and data flow analyses of a program, locations in the program at which to insert early warning (EW) code to monitor for an event. The program is instrumented with EW code which monitors for the event, by inserting EW code at the determined locations. Upon detecting the event, EW code performs an early action warning, or issues an early action. Early warnings are issued when an EW-instrumented block is reached. Issuance of an early warning action can be conditional upon execution of the program in a particular environment, such as a production environment. Issuance of an EW can also be conditional upon executing an untested block of code that was recently modified.
    Type: Application
    Filed: May 28, 2004
    Publication date: November 4, 2004
    Inventors: Anant Agarwal, Andrew E. Ayers, Richard Schooler
  • Publication number: 20040221270
    Abstract: A method for determining changed code in a second program binary relative to a first or baseline program binary, where the second program is a different version of the first program, includes translating, responsive to symbol tables and/or control flow representations, machine addresses of both program binaries to symbols. The first and second program binaries are disassembled using the translated symbols. Differences between the two resulting disassemblies are determined, and a list of the differences is created. Differences between the program binaries can be determined by textually comparing the disassemblies, or alternatively, by determining the differences between the control flow representations of the programs. The list of differences can be presented to a user, or alternatively, can be passed to another process for further processing, such as test coverage analysis, code change analysis, or failure analysis, among other analyses.
    Type: Application
    Filed: June 4, 2004
    Publication date: November 4, 2004
    Inventors: Emmett Witchel, Christopher D. Metcalf, Andrew E. Ayers
  • Publication number: 20040216092
    Abstract: A program execution data trace is created by instrumenting a program to record value sets during execution and an instruction trace. By simulating instructions either backward or forward from a first instruction associated with a recorded value set to a second instruction according to the instruction trace, a value set is determined for the second instruction. Backward and forward simulation can be combined to complement each other. For backward simulation, a table of simulation instructions is preferably maintained, which associates program instructions encountered in the instruction trace with simulation instructions which reverse the operation of the associated program instructions. Preferably, one or more probes is inserted into the program to save values of particular variables whose value may be difficult to determine. Preferably, the instruction trace is displayed alongside and correlated with the data trace.
    Type: Application
    Filed: May 25, 2004
    Publication date: October 28, 2004
    Inventors: Andrew E. Ayers, Richard Schooler, Anant Agarwal
  • Patent number: 6804814
    Abstract: A program execution data trace is created by instrumenting a program to record value sets during execution and an instruction trace. By simulating instructions either backward or forward from a first instruction associated with a recorded value set to a second instruction according to the instruction trace, a value set is determined for the second instruction. Backward and forward simulation can be combined to complement each other. For backward simulation, a table of simulation instructions is preferably maintained, which associates program instructions encountered in the instruction trace with simulation instructions which reverse the operation of the of the associated program instructions. Preferably, one or more probes is inserted into the program to save values of particular variables whose value may be difficult to determine. Preferably, the instruction trace is displayed alongside and correlated with the data trace.
    Type: Grant
    Filed: December 29, 1999
    Date of Patent: October 12, 2004
    Assignee: VERITAS Operating Corporation
    Inventors: Andrew E. Ayers, Richard Schooler, Anant Agarwal
  • Patent number: 6748584
    Abstract: A method for determining changed code in a second program binary relative to a first or baseline program binary, where the second program is a different version of the first program, includes translating, responsive to symbol tables and/or control flow representations, machine addresses of both program binaries to symbols. The first and second program binaries are disassembled using the translated symbols. Differences between the two resulting disassemblies are determined, and a list of the differences is created. Differences between the program binaries can be determined by textually comparing the disassemblies, or alternatively, by determining the differences between the control flow representations of the programs. The list of differences can be presented to a user, or alternatively, can be passed to another process for further processing, such as test coverage analysis, code change analysis, or failure analysis, among other analyses.
    Type: Grant
    Filed: December 29, 1999
    Date of Patent: June 8, 2004
    Assignee: Veritas Operating Corporation
    Inventors: Emmett Witchel, Christopher D. Metcalf, Andrew E. Ayers
  • Patent number: 6745383
    Abstract: A computer method for issuing an early warning includes determining, using change and test coverage and control flow and data flow analyses of a program, locations in the program at which to insert early warning (EW) code to monitor for an event. The program is instrumented with EW code which monitors for the event, by inserting EW code at the determined locations. Upon detecting the event, EW code performs an early action warning, or issues an early action. Early warnings are issued when an EW-instrumented block is reached. Issuance of an early warning action can be conditional upon execution of the program in a particular environment, such as a production environment. Issuance of an EW can also be conditional upon executing an untested block of code that was recently modified.
    Type: Grant
    Filed: December 29, 1999
    Date of Patent: June 1, 2004
    Assignee: Veritas Operating Corporation
    Inventors: Anant Agarwal, Andrew E. Ayers, Richard Schooler
  • Patent number: 6353924
    Abstract: A method of back-tracing execution of a computer program, where the computer program comprises a plurality of blocks, comprises instrumenting an original version of the program by adding instrumentation code to some or all of the blocks to form an instrumented program. Instrumentation can be added at the binary or source level, or at link time. The instrumentation code records execution sequence information upon execution of the corresponding instrumented block to create a trace record of the executed program. The execution sequence information for each block comprises a block identifier which identifies the corresponding block. A detailed back-trace is generated, after the program has executed, by replacing each recorded block identifier with program counters associated with each instruction in the corresponding block. The application may comprise several programs or subprograms, in which case separate regions of memory can be maintained.
    Type: Grant
    Filed: February 8, 1999
    Date of Patent: March 5, 2002
    Assignee: Incert Software Corporation
    Inventors: Andrew E. Ayers, Anant Agarwal, Richard Schooler
  • Patent number: 6070011
    Abstract: A compile method employs loop fusion to improve execution of a first loop and a second loop in a code sequence. A compile method initially peels one or more loop iterations from one of the loops to cause each of the loops to exhibit an equal number of loop iterations. Thereafter, an attempt is made to fuse the first and second loops, upon a condition that the resulting fused loop produces a same computational result as would be produced if the first loop and second loop were not fused. If the condition is not met, a loop reversal is performed on one of the loops and a fusing action is again attempted; if the attempted fusing action of the loops does not fulfill the condition, a loop reversal is performed on the other loop and a fusing action is again attempted. The combined loop peeling/loop reversal actions provide a higher probability of an ability to fuse the loops than otherwise.
    Type: Grant
    Filed: October 21, 1997
    Date of Patent: May 30, 2000
    Assignee: Hewlett-Packard Co.
    Inventors: Jiyang Liu, Robert Gottlieb, Andrew E. Ayers
  • Patent number: 6009273
    Abstract: A compiler method analyzes a program listing to identify a first set of subroutines therein, each of which accepts a variable number of arguments, converting the first set of subroutines into further sets of subroutines which accept fixed numbers of arguments.
    Type: Grant
    Filed: October 21, 1997
    Date of Patent: December 28, 1999
    Assignee: Hewlett-Packard Company
    Inventors: Andrew E. Ayers, Jiyang Liu
  • Patent number: 5857105
    Abstract: A compiler method converts an indirect call to a callee routine in a caller routine program listing, to an in-line listing of, or a direct call to, the callee routine in the caller routine. An indirect call is a call to a callee routine wherein the callee routine is not absolutely identified until run time of the program listing. The method includes the steps of: comparing plural prospective callee routines in the program listing with characteristics of an indirect caller site in the caller routine and eliminating prospective callee routines which evidence other than a match with those characteristics; employing call statistics associated with remaining prospective callee routines (and the caller routine) to eliminate further ones of the prospective callee routines to arrive at a set of one or more chosen prospective callee routines. The method concludes by in-lining at the indirect caller site at least one of the set of chosen prospective callee routines. As an alternative, a direct call can be inserted.
    Type: Grant
    Filed: February 5, 1997
    Date of Patent: January 5, 1999
    Assignee: Hewlett-Packard Company
    Inventors: Andrew E. Ayers, Chun C. Gong