Patents by Inventor Andrew J. Edwards

Andrew J. Edwards 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: 7213245
    Abstract: A method of supplying program units of a computer program as the program needs the program units includes running a program skeleton. The program skeleton is derived from the program, but has a program stub where a program unit associated with the program stub may be inserted. Upon encountering the program stub, the method includes getting the program unit associated with the program stub and inserting the program unit at the program stub. A method of supplying funclets of a computer program from a server computer system to a client computer system includes receiving a plurality of requests for funclets during a test period. If a tested probability of requests for a first funclet being followed by requests for a second funclet is at least a predetermined probability, then the method also includes sending the first funclet and the second funclet to the client computer system in response to a request from the client computer system for the first funclet after the test period.
    Type: Grant
    Filed: May 14, 2002
    Date of Patent: May 1, 2007
    Assignee: Microsoft Corporation
    Inventors: Hon Keat W. Chan, Andrew J. Edwards, David Gillies, Carlos P. Gomes, Jiyang Liu, Patrick L. McDonald, Mark L. Roberts, Hoi Vo
  • 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
  • Patent number: 7162710
    Abstract: Described is a system and method for dynamically modifying an executing heterogeneous program in a heterogeneous distributed computing environment. A system reference is obtained to a target system on which the heterogeneous program is executing. The target system may be a local or a remote system. Based on the system reference, a program reference associated with the program is obtained which is used to locate a component of the program. An executable code associated with the component is modified to create a modified executable code based on a modification of an internal representation of the component. The modified code is inserted into the target system memory without requiring the target system to go offline. The code is inserted either by patching over an original memory area or injecting into a new memory location. The code may be inserted when the target program is operating in user mode or kernel mode.
    Type: Grant
    Filed: November 1, 2001
    Date of Patent: January 9, 2007
    Assignee: Microsoft Corporation
    Inventors: Andrew J. Edwards, Carlos P. Gomes
  • 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: 20030217197
    Abstract: A method prepares a computer program for operation in a computer supply system that supplies portions, or program units, of program code or program data of the computer program as the program needs the portions. The method includes defining a program unit of the program and removing the program unit from the program, thereby producing a program skeleton that is missing the program unit. The method further includes inserting instructions in place of the program unit in the program skeleton. The instructions are operative to request the program unit when the program skeleton encounters the instructions. An information structure includes a program skeleton of a program. The program skeleton is missing a funclet of the program, but includes a placeholder in place of the funclet. The program skeleton additionally includes instructions in place of the funclet. The instructions are operative to request the funclet when the program skeleton encounters the instructions.
    Type: Application
    Filed: May 14, 2002
    Publication date: November 20, 2003
    Applicant: Microsoft Corporation
    Inventors: Hon Keat W. Chan, Andrew J. Edwards, David Gillies, Carlos P. Gomes, Jiyang Liu, Patrick L. McDonald, Mark L. Roberts, Hoi Vo
  • Publication number: 20030217196
    Abstract: A method of supplying program units of a computer program as the program needs the program units includes running a program skeleton. The program skeleton is derived from the program, but has a program stub where a program unit associated with the program stub may be inserted. Upon encountering the program stub, the method includes getting the program unit associated with the program stub and inserting the program unit at the program stub. A method of supplying funclets of a computer program from a server computer system to a client computer system includes receiving a plurality of requests for funclets during a test period. If a tested probability of requests for a first funclet being followed by requests for a second funclet is at least a predetermined probability, then the method also includes sending the first funclet and the second funclet to the client computer system in response to a request from the client computer system for the first funclet after the test period.
    Type: Application
    Filed: May 14, 2002
    Publication date: November 20, 2003
    Applicant: Microsoft Corporation
    Inventors: Hon Keat W. Chan, Andrew J. Edwards, David Gillies, Carlos P. Gomes, Jiyang Liu, Patrick L. McDonald, Mark L. Roberts, Hoi 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