Patents by Inventor Hon Keat W. Chan

Hon Keat W. Chan 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: 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
  • Patent number: 7308684
    Abstract: Historically, resources (e.g., dynamic link libraries) were organized based on factors including the expertise of development teams. Unfortunately, this creates shared resources of much greater functionality than required by any one client application. By reformulating shared resources according to nodes reachable by classified applications, reformulated resources reduce the over-inclusive nature of shared resources formed based on the expertise of development teams. Further, layering resources for lower order classified applications also reduces memory requirements.
    Type: Grant
    Filed: June 16, 2003
    Date of Patent: December 11, 2007
    Assignee: Microsoft Corporation
    Inventor: Hon Keat W. Chan
  • Patent number: 7237241
    Abstract: Computer systems have resources that are often shared by plural processes (or threads). It is often desirable to limit access to these shared resources to one process at a time. Historically locks were used in conjunction with conditional tests to provide exclusive access to a region of code or data. Instead, a global variable contains a pointer to either a protected resource, or an exchange instruction. A process exchanges its' local variable with the global variable and jumps to the location in the exchanged local variable. If the global variable had the pointer to the shared resource before the exchange, then the jump enters the protected region. If not, the jump returns to exchange variables again. As soon as the pointer to the protected resource is returned to the global variable, a next exchange and jump will access the shared resource.
    Type: Grant
    Filed: June 23, 2003
    Date of Patent: June 26, 2007
    Assignee: Microsoft Corporation
    Inventors: Hon Keat W. Chan, Carlos Gomes
  • 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
  • Patent number: 7210124
    Abstract: Historically, resources (e.g., dynamic linked libraries) were organized based on factors including the expertise of development teams. Unfortunately, this creates shared resources of much greater functionality than required by any one client application. By reformulating shared resources according to the nodes reachable from a set of defined entry points, the reformulated resources will contain nodes of relevance. This optimization reduces memory requirements which is useful for embedded systems and for reducing disk accesses.
    Type: Grant
    Filed: June 16, 2003
    Date of Patent: April 24, 2007
    Assignee: Microsoft Corporation
    Inventor: Hon Keat W. Chan
  • 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: 20040268213
    Abstract: Historically, resources (e.g., dynamic link libraries) were organized based on factors including the expertise of development teams. Unfortunately, this creates shared resources of much greater functionality than required by any one client application. By reformulating shared resources according to nodes reachable by classified applications, reformulated resources reduce the over-inclusive nature of shared resources formed based on the expertise of development teams. Further, layering resources for lower order classified applications also reduces memory requirements.
    Type: Application
    Filed: June 16, 2003
    Publication date: December 30, 2004
    Applicant: Microsoft Corporation
    Inventor: Hon Keat W. Chan
  • Publication number: 20040261080
    Abstract: Computer systems have resources that are often shared by plural processes (or threads). It is often desirable to limit access to these shared resources to one process at a time. Historically locks were used in conjunction with conditional tests to provide exclusive access to a region of code or data. Instead, a global variable contains a pointer to either a protected resource, or an exchange instruction. A process exchanges its' local variable with the global variable and jumps to the location in the exchanged local variable. If the global variable had the pointer to the shared resource before the exchange, then the jump enters the protected region. If not, the jump returns to exchange variables again. As soon as the pointer to the protected resource is returned to the global variable, a next exchange and jump will access the shared resource.
    Type: Application
    Filed: June 23, 2003
    Publication date: December 23, 2004
    Applicant: Microsoft Corporation
    Inventors: Hon Keat W. Chan, Carlos Gomes
  • Publication number: 20040255273
    Abstract: Historically, resources (e.g., dynamic linked libraries) were organized based on factors including the expertise of development teams. Unfortunately, this creates shared resources of much greater functionality than required by any one client application. By reformulating shared resources according to the nodes reachable from a set of defined entry points, the reformulated resources will contain nodes of relevance. This optimization reduces memory requirements which is useful for embedded systems and for reducing disk accesses.
    Type: Application
    Filed: June 16, 2003
    Publication date: December 16, 2004
    Applicant: Microsoft Corporation
    Inventor: Hon Keat W. Chan
  • 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
  • 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: 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