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: 9575864Abstract: 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: GrantFiled: August 6, 2014Date of Patent: February 21, 2017Assignee: MICROSOFT TECHNOLOGY LICENSING, LLCInventors: Joe Chau, Jay Krell, Allan Murphy, Danny Chen, Hoi Vo, Steven Pratschner, Galen Hunt
-
Publication number: 20150347263Abstract: 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: ApplicationFiled: August 6, 2014Publication date: December 3, 2015Inventors: Joe Chau, Jay Krell, Allan Murphy, Danny Chen, Hoi Vo, Steven Pratschner, Galen Hunt
-
Patent number: 8434079Abstract: 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: GrantFiled: June 4, 2007Date of Patent: April 30, 2013Assignee: Microsoft CorporationInventors: Hon Keat W. Chan, Andrew J. Edwards, David Gillies, Carlos P. Gomes, Jiyang Liu, Patrick L. McDonald, Mark L. Roberts, Hoi Vo
-
Publication number: 20080034346Abstract: 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: ApplicationFiled: June 4, 2007Publication date: February 7, 2008Applicant: Microsoft CorporationInventors: Hon Chan, Andrew Edwards, David Gillies, Carlos Gomes, Jiyang Liu, Patrick McDonald, Mark Roberts, Hoi Vo
-
Patent number: 7228540Abstract: 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: GrantFiled: May 14, 2002Date of Patent: June 5, 2007Assignee: Microsoft CorporationInventors: Hon Keat W. Chan, Andrew J. Edwards, David Gillies, Carlos P. Gomes, Jiyang Liu, Patrick L. McDonald, Mark L. Roberts, Hoi Vo
-
Patent number: 7213245Abstract: 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: GrantFiled: May 14, 2002Date of Patent: May 1, 2007Assignee: Microsoft CorporationInventors: Hon Keat W. Chan, Andrew J. Edwards, David Gillies, Carlos P. Gomes, Jiyang Liu, Patrick L. McDonald, Mark L. Roberts, Hoi Vo
-
Publication number: 20050198470Abstract: 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: ApplicationFiled: March 21, 2005Publication date: September 8, 2005Applicant: Microsoft CorporationInventors: Darko Kirovski, Milenko Drinic, Hoi Vo
-
Publication number: 20050010891Abstract: 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: ApplicationFiled: August 4, 2004Publication date: January 13, 2005Applicant: Microsoft CorporationInventors: 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: 20030217197Abstract: 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: ApplicationFiled: May 14, 2002Publication date: November 20, 2003Applicant: Microsoft CorporationInventors: Hon Keat W. Chan, Andrew J. Edwards, David Gillies, Carlos P. Gomes, Jiyang Liu, Patrick L. McDonald, Mark L. Roberts, Hoi Vo
-
Publication number: 20030217196Abstract: 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: ApplicationFiled: May 14, 2002Publication date: November 20, 2003Applicant: Microsoft CorporationInventors: Hon Keat W. Chan, Andrew J. Edwards, David Gillies, Carlos P. Gomes, Jiyang Liu, Patrick L. McDonald, Mark L. Roberts, Hoi Vo