Patents by Inventor Hoi Vo

Hoi Vo 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: 9575864
    Abstract: Methods for dynamically instrumenting a program while the program is executing are described. In some embodiments, profiling hooks may be selectively inserted into and removed from a program while the program is running. The hooks may gather profiling information, such as the frequency and duration of function calls, for a selected set of functions. The hooks may be inserted into the program without requiring a special build or modifications to the binary by modifying machine-level instructions for the program stored in system memory. The ability to selectively insert instrumentation into the machine-level instructions stored in the system memory allows a set of functions to be selected during execution of the program and hooks for each function of the set of functions to be dynamically inserted or removed during execution of the program to precisely capture profiling information for the set of functions.
    Type: Grant
    Filed: August 6, 2014
    Date of Patent: February 21, 2017
    Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
    Inventors: Joe Chau, Jay Krell, Allan Murphy, Danny Chen, Hoi Vo, Steven Pratschner, Galen Hunt
  • Publication number: 20150347263
    Abstract: Methods for dynamically instrumenting a program while the program is executing are described. In some embodiments, profiling hooks may be selectively inserted into and removed from a program while the program is running. The hooks may gather profiling information, such as the frequency and duration of function calls, for a selected set of functions. The hooks may be inserted into the program without requiring a special build or modifications to the binary by modifying machine-level instructions for the program stored in system memory. The ability to selectively insert instrumentation into the machine-level instructions stored in the system memory allows a set of functions to be selected during execution of the program and hooks for each function of the set of functions to be dynamically inserted or removed during execution of the program to precisely capture profiling information for the set of functions.
    Type: Application
    Filed: August 6, 2014
    Publication date: December 3, 2015
    Inventors: Joe Chau, Jay Krell, Allan Murphy, Danny Chen, Hoi Vo, Steven Pratschner, Galen Hunt
  • Patent number: 8434079
    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: Grant
    Filed: June 4, 2007
    Date of Patent: April 30, 2013
    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
  • Publication number: 20080034346
    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: June 4, 2007
    Publication date: February 7, 2008
    Applicant: Microsoft Corporation
    Inventors: Hon Chan, Andrew Edwards, David Gillies, Carlos Gomes, Jiyang Liu, Patrick McDonald, Mark Roberts, Hoi Vo
  • Patent number: 7228540
    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: Grant
    Filed: May 14, 2002
    Date of Patent: June 5, 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: 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
  • Publication number: 20050198470
    Abstract: Compressing program binaries with reduced compression ratios. One or several pre-processing acts are performed before performing compression using a local sequential correlation oriented compression technology such as PPM, or one of its variants or improvements. One pre-processing act splits the binaries into several substreams that have high local sequential correlation. Such splitting takes into consideration the correlation between common fields in different instructions as well as the correlation between different fields in the same instruction. Another pre-processing reschedules binary instructions to improve the degree of local sequential correlation without affecting dependencies between instructions. Yet another pre-processing act replaces common operation codes in the instruction with a symbols from a second alphabet, thereby distinguishing between operation codes that have a particular value, and other portions of the instruction that just happen to have the same value.
    Type: Application
    Filed: March 21, 2005
    Publication date: September 8, 2005
    Applicant: Microsoft Corporation
    Inventors: Darko Kirovski, Milenko Drinic, Hoi Vo
  • 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: 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