Patents by Inventor Urs Holzle

Urs Holzle 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: 7137123
    Abstract: Systems and methods for implementing message dispatch for an object-oriented program are provided. Receiver type information is collected at a site of a method that dispatches messages to receiver objects. The receiver type information is saved for subsequent execution of the program. By saving the receiver type information, the program may be more efficient as it is not necessary to collect the receiver type information again. Additionally, inlining information may be saved with the receiver type information.
    Type: Grant
    Filed: June 28, 2001
    Date of Patent: November 14, 2006
    Assignee: Sun Microsystems, Inc.
    Inventors: Lars Bak, Urs Hölzle
  • Patent number: 6865734
    Abstract: Methods and apparatus for dynamically compiling byte codes associated with methods during idle periods in the execution of a computer program are disclosed. The described methods are particularly suitable for use in computer systems that are arranged to execute both interpreted and compiled byte codes. In some embodiments, methods to be dynamically compiled are referenced in one or more lists. The lists may be prioritized to facilitate the compilation of the highest priority methods first. In one embodiment, a pair of compilation lists are provided with a first one of the compilation lists being created prior to processing the computer program while the other is created during the processing of the computer program.
    Type: Grant
    Filed: April 17, 2001
    Date of Patent: March 8, 2005
    Assignee: Sun Microsystems, Inc.
    Inventors: Urs Hölzle, Lars Bak
  • Publication number: 20040244009
    Abstract: Systems and methods for implementing message dispatch for an object-oriented program are provided. Receiver type information is collected at a site of a method that dispatches messages to receiver objects. The receiver type information is saved for subsequent execution of the program. By saving the receiver type information, the program may be more efficient as it is not necessary to collect the receiver type information again. Additionally, inlining information may be saved with the receiver type information.
    Type: Application
    Filed: June 28, 2001
    Publication date: December 2, 2004
    Applicant: Sun Microsystems, Inc.
    Inventors: Lars Bak, Urs Holzle
  • Publication number: 20040205712
    Abstract: Methods and apparatus for dynamically determining whether portions of code should be interpreted or compiled in order to optimize a software application during run-time are disclosed. According to one aspect of the present invention, computer-implemented method for run-time processing of a computer program which includes byte-codes arranged as a plurality of methods includes invoking a first method selected from the plurality of methods. Invoking the first selected method involves interpreting the first selected method. An invocation tracker which is arranged to track the number of invocations of the first selected method is updated, and a determination is made regarding when the invocation tracker indicates that the number of invocations of the first selected method exceeds a threshold value. The first selected method is compiled when it is determined that the invocation tracker indicates that the number of invocations of the first selected method exceeds a threshold value.
    Type: Application
    Filed: April 18, 2001
    Publication date: October 14, 2004
    Inventors: Urs Holzle, Robert Griesemer, David Griswold
  • Publication number: 20040154008
    Abstract: Techniques for performing static binding of dispatched-calls in the presence of dynamic linking and loading are provided. A method for increasing the execution performance of a function at run-time includes compiling the function, which may either be interpreted or previously compiled, and identifying a call within the function to a process. The method also includes adding dependency information to the function. The dependency information is arranged to indicate a status of the function, and contains information pertaining to the class, the name, and the signature associated with the process. In one embodiment, the process is a virtual process, and the method includes analyzing a class structure associated with the function in order to determine when the virtual process is a substantially unique target of the call. In such an embodiment, the virtual process may be inlined into the function when it is determined that the virtual process is the substantially unique target of the call.
    Type: Application
    Filed: January 21, 2004
    Publication date: August 5, 2004
    Applicant: SUN MICROSYSTEMS, INC., a Corporation of the state of Delaware
    Inventors: Lars Bak, Srdjan Mitrovic, Urs Holzle
  • Patent number: 6714991
    Abstract: Methods and apparatus for performing fast subtype checks during program execution are disclosed. According to one aspect of the present invention, a method for determining whether a class associated with an object that is a part of an object-based computing system is a subtype of another type includes obtaining a candidate type from a dynamic storage location that is associated with a class which is associated with the object, and comparing the candidate type against a first type that is potentially the same as the candidate type. A determination is then made as to whether the candidate type is substantially equal to the first type. When the determination is that the candidate type is substantially equal to the first type, an indication that the candidate type is a subtype of the first type is provided. In one embodiment, the candidate type obtained from the dynamic storage location is obtained from a cache element in the class associated with the object.
    Type: Grant
    Filed: June 30, 1998
    Date of Patent: March 30, 2004
    Assignee: Sun Microsystems, Inc.
    Inventors: Lars Bak, Srdjan Mitrovic, Urs Hölzle
  • Patent number: 6704927
    Abstract: Techniques for performing static binding of dispatched-calls in the presence of dynamic linking and loading are provided. A method for increasing the execution performance of a function at run-time includes compiling the function, which may either be interpreted or previously compiled, and identifying a call within the function to a process. The method also includes adding dependency information to the function. The dependency information is arranged to indicate a status of the function, and contains information pertaining to the class, the name, and the signature associated with the process. In one embodiment, the process is a virtual process, and the method includes analyzing a class structure associated with the function in order to determine when the virtual process is a substantially unique target of the call. In such an embodiment, the virtual process may be inlined into the function when it is determined that the virtual process is the substantially unique target of the call.
    Type: Grant
    Filed: March 10, 1999
    Date of Patent: March 9, 2004
    Assignee: Sun Microsystems, Inc.
    Inventors: Lars Bak, Srdjan Mitrovic, Urs Hölzle
  • Patent number: 6601235
    Abstract: Methods and apparatus for dynamically deoptimizing a frame in a control stack during the execution of a computer program are disclosed. The described methods are particularly suitable for use in computer systems that are arranged to execute both interpreted and compiled byte codes. According to one aspect of the present invention, a computer-implemented method for deoptimizing a compiled method includes creating a data structure. The data structure, which is separate from the control stack, is arranged to store information relating to the compiled method. A reference indicator, such as a pointer, is created to associate the data structure with the frame. The method, which is compiled to a first state of optimization, is then deoptimized to a second state of optimization, and the method in the first state of optimization may be discarded, thereby deoptimizing the frame.
    Type: Grant
    Filed: April 27, 2001
    Date of Patent: July 29, 2003
    Assignee: Sun Microsystems, Inc.
    Inventors: Urs Hölzle, Lars Bak
  • Patent number: 6553426
    Abstract: Methods and apparatus for efficiently enabling an alternate return address associated with a function call to essentially be stored such that the alternate return address may be readily accessed are disclosed. According to one aspect of the present invention, a method for enabling a return address associated with a function called by a routine to be efficiently stored includes calling the function from within the routine while the routine is executing. In general, the function is external to the routine. The function, once called, begins executing. Eventually, the function returns to the routine. Specifically, the function returns to a location in the routine that is identified by an expected return point, or normal return address. The instruction in the routine that corresponds to the expected return point is a dummy instruction that executes with a low computational overhead but does not affect program execution.
    Type: Grant
    Filed: October 6, 1997
    Date of Patent: April 22, 2003
    Assignee: Sun Microsystems, Inc.
    Inventors: Urs Hölzle, Robert Griesemer
  • Patent number: 6510498
    Abstract: Methods and apparatus for the efficient allocation of shared memory in a multi-threaded computer system are disclosed. In accordance with one embodiment of the present invention, a computer-implemented method for allocating memory shared by multiple threads in a multi-threaded computing system includes partitioning the shared memory into a plurality of blocks, and grouping the multiple threads into at least a first group and a second group. A selected block is allocated to a selected thread which may attempt to allocate an object in the selected block. The allocation of the selected block to the selected thread is based at least partially upon whether the selected thread is a part of the first group or the second group. In one embodiment, grouping the multiple threads into the first group and the second group includes identifying a particular thread and determining whether the particular thread is a fast allocating thread.
    Type: Grant
    Filed: November 28, 2000
    Date of Patent: January 21, 2003
    Assignee: Sun Microsystems, Inc.
    Inventors: Urs Hölzle, Steffen Grarup
  • Patent number: 6415381
    Abstract: Systems and methods for implementing an execution stack which stores frames for functions written in multiple programming languages are provided. The frames for functions written in different programming languages may be interleaved on the same execution stack. A data block on the execution stack may be utilized to traverse the execution stack around a frame by storing a stack pointer and frame pointer to a previous frame. Additionally, exceptions may be propagated, with conversion if necessary, through frames on the execution stack that are written in different programming languages.
    Type: Grant
    Filed: October 12, 1999
    Date of Patent: July 2, 2002
    Assignee: Sun Microsystems, Inc.
    Inventors: Lars Bak, Robert Griesemer, Urs Hölzle
  • Patent number: 6385660
    Abstract: Systems and methods for implementing site specific message dispatch in an object-oriented environment are provided. Receiver type information may be saved at a message dispatch site in order to provide site specific message dispatch. By allowing message dispatch to vary at different call sites, object-oriented systems may be more efficient and flexible.
    Type: Grant
    Filed: October 6, 1997
    Date of Patent: May 7, 2002
    Assignee: Sun Microsystems, Inc.
    Inventors: Robert Griesemer, Urs Hölzle
  • Publication number: 20010052117
    Abstract: Methods and apparatus for dynamically compiling byte codes associated with methods during idle periods in the execution of a computer program are disclosed. The described methods are particularly suitable for use in computer systems that are arranged to execute both interpreted and compiled byte codes. In some embodiments, methods to be dynamically compiled are referenced in one or more lists. The lists may be prioritized to facilitate the compilation of the highest priority methods first. In one embodiment, a pair of compilation lists are provided with a first one of the compilation lists being created prior to processing the computer program while the other is created during the processing of the computer program.
    Type: Application
    Filed: April 17, 2001
    Publication date: December 13, 2001
    Inventors: Urs Holzle, Lars Bak
  • Patent number: 6317796
    Abstract: Systems and methods for implementing message dispatch for an object-oriented program are provided. Receiver type information is collected at a site of a method that dispatches messages to receiver objects. The receiver type information is saved for subsequent execution of the program. By saving the receiver type information, the program may be more efficient as it is not necessary to collect the receiver type information again. Additionally, inlining information may be saved with the receiver type information.
    Type: Grant
    Filed: October 6, 1997
    Date of Patent: November 13, 2001
    Assignee: Sun Microsystems, Inc.
    Inventors: Lars Bak, Urs Hölzle
  • Publication number: 20010011306
    Abstract: Systems and methods for implementing site specific message dispatch in an object-oriented environment are provided. Receiver type information may be saved at a message dispatch site in order to provide site specific message dispatch. By allowing message dispatch to vary at different call sites, object-oriented systems may be more efficient and flexible.
    Type: Application
    Filed: October 6, 1997
    Publication date: August 2, 2001
    Inventors: ROBERT GRIESEMER, URS HOLZLE
  • Patent number: 6240548
    Abstract: Methods and apparatus for dynamically compiling byte codes associated with methods during idle periods in the execution of a computer program are disclosed. The described methods are particularly suitable for use in computer systems that are arranged to execute both interpreted and compiled byte codes. In some embodiments, methods to be dynamically compiled are referenced in one or more lists. The lists may be prioritized to facilitate the compilation of the highest priority methods first. In one embodiment, a pair of compilation lists are provided with a first one of the compilation lists being created prior to processing the computer program while the other is created during the processing of the computer program.
    Type: Grant
    Filed: July 14, 1999
    Date of Patent: May 29, 2001
    Assignee: Sun Microsystems, Inc.
    Inventors: Urs Hölzle, Lars Bak
  • Patent number: 6240547
    Abstract: Methods and apparatus for dynamically deoptimizing a frame in a control stack during the execution of a computer program are disclosed. The described methods are particularly suitable for use in computer systems that are arranged to execute both interpreted and compiled byte codes. According to one aspect of the present invention, a computer-implemented method for deoptimizing a compiled method includes creating a data structure. The data structure, which is separate from the control stack, is arranged to store information relating to the compiled method. A reference indicator, such as a pointer, is created to associate the data structure with the frame. The method, which is compiled to a first state of optimization, is then deoptimized to a second state of optimization, and the method in the first state of optimization may be discarded, thereby deoptimizing the frame.
    Type: Grant
    Filed: June 18, 1999
    Date of Patent: May 29, 2001
    Assignee: Sun Microsystems, Inc.
    Inventors: Urs Hölzle, Lars Bak
  • Patent number: 6237141
    Abstract: Methods and apparatus for dynamically determining whether portions of code should be interpreted or compiled in order to optimize a software application during run-time are disclosed. According to one aspect of the present invention, computer-implemented method for run-time processing of a computer program which includes byte-codes arranged as a plurality of methods includes invoking a first method selected from the plurality of methods. Invoking the first selected method involves interpreting the first selected method. An invocation tracker which is arranged to track the number of invocations of the first selected method is updated, and a determination is made regarding when the invocation tracker indicates that the number of invocations of the first selected method exceeds a threshold value. The first selected method is compiled when it is determined that the invocation tracker indicates that the number of invocations of the first selected method exceeds a threshold value.
    Type: Grant
    Filed: August 2, 1999
    Date of Patent: May 22, 2001
    Assignee: Sun Microsystems, Inc.
    Inventors: Urs Hölzle, Robert Griesemer, David Griswold
  • Patent number: 6209066
    Abstract: Methods and apparatus for the efficient allocation of shared memory in a multi-threaded computer system are disclosed. In accordance with one embodiment of the present invention, a computer-implemented method for allocating memory shared by multiple threads in a multi-threaded computing system includes partitioning the shared memory into a plurality of blocks, and grouping the multiple threads into at least a first group and a second group. A selected block is allocated to a selected thread which may attempt to allocate an object in the selected block. The allocation of the selected block to the selected thread is based at least partially upon whether the selected thread is a part of the first group or the second group. In one embodiment, grouping the multiple threads into the first group and the second group includes identifying a particular thread and determining whether the particular thread is a fast allocating thread.
    Type: Grant
    Filed: June 30, 1998
    Date of Patent: March 27, 2001
    Assignee: Sun Microsystems, Inc.
    Inventors: Urs Hölzle, Steffen Grarup
  • Patent number: RE39519
    Abstract: Systems and methods for implementing an execution stack which stores frames for functions written in multiple programming languages are provided. The frames for functions written in different programming languages may be interleaved on the same execution stack. A data block on the execution stack may be utilized to traverse the execution stack around a frame by storing a stack pointer and frame pointer to a previous frame. Additionally, exceptions may be propagated, with conversion if necessary, through frames on the execution stack that are written in different programming languages.
    Type: Grant
    Filed: July 1, 2004
    Date of Patent: March 13, 2007
    Assignee: Sun Microsystems, Inc.
    Inventors: Lars Bak, Robert Griesemer, Urs Hölzle