Patents by Inventor David M. Ungar

David M. Ungar 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).

  • Publication number: 20040034851
    Abstract: One embodiment of the present invention provides a system that facilitates implementing multi-mode specification-driven disassembler. During operation, the disassembler receives a machine-code version of a computer program. In order to disassemble a specific machine-code instruction from this machine-code version, the system compares the machine-code instruction against a set of instruction templates for assembly code instructions to identify a set of matching templates. Next, the system selects a matching template from the set of matching templates based on the state of a mode variable, which indicates a specificity mode for the disassembler. The system then disassembles the machine-code instruction using the operand fields defined by the matching template to produce a corresponding assembly code instruction.
    Type: Application
    Filed: August 16, 2002
    Publication date: February 19, 2004
    Inventors: David M. Ungar, Mario I. Wolczko, Bernd J. W. Mathiske
  • Publication number: 20040030963
    Abstract: A method for debugging a computer program, includes (a) selecting a section of the computer program assembled in a machine-language, the computer program using a set of registers, the section including a plurality of machine-language instructions, (b) disassembling the plurality of machine-language instructions into mnemonic instructions, (c) automatically determining and selecting registers used by the mnemonic instructions corresponding to the section from among the set of registers, and (d) displaying the selected registers to a user. The method may further include displaying the mnemonic instructions, indicating a specific mnemonic instruction, and displaying a value of each of the selected registers before the execution of the indicated mnemonic instruction. The method may further include providing an option to a user to manually select registers to be displayed.
    Type: Application
    Filed: August 12, 2002
    Publication date: February 12, 2004
    Applicant: Sun Microsystems, Inc., a Delaware Corporation
    Inventor: David M. Ungar
  • Patent number: 6681306
    Abstract: Methods and apparatus for enabling an efficient generational scavenging garbage collection to be performed on a managed memory area are disclosed. According to one aspect of the present invention, a method for reclaiming memory space uses a managed memory area that includes a first area and a second area. The first area is arranged to store recently allocated objects, while the second area being arranged to store older objects. The method includes determining when a first section of the first area in which new objects are to be allocated is substantially filled. When it is determined that the first section is substantially filled, a garbage collection is performed on a second section of the first. After the garbage collection, the second section is set to support new object allocation such that new objects are allocated in the second section, while the first section is reset such that it is no longer arranged to support new object allocation.
    Type: Grant
    Filed: November 29, 1999
    Date of Patent: January 20, 2004
    Assignee: Sun Microsystems, Inc.
    Inventors: Peter B. Kessler, Steffen Grarup, David M. Ungar
  • Publication number: 20040005005
    Abstract: One embodiment of the present invention provides a system to facilitate image difference transmission for images in a video system. The system operates by receiving a video stream that includes a sequence of images. The system transforms a first frame of the sequence of images using a transform function to create a first transformed image. Note that this transform function places the image salience in the larger coefficients. The system also transforms a second frame using the same transform function to create a second transformed image. The system then subtracts the second transformed image from the first transformed image to create a difference-transformed image. The coefficients are arranged in order of size, from larger to smaller. Smaller coefficients, that are less than a specific threshold, are removed from the difference-transformed image so that this difference-transformed image can be stored and transmitted with reduced bandwidth while maintaining image salience.
    Type: Application
    Filed: April 21, 2003
    Publication date: January 8, 2004
    Inventors: Kristen A. McIntyre, David M. Ungar
  • Publication number: 20030106049
    Abstract: A modular parser architecture and methods related thereto make use of a number of miniparsers. Each miniparser is capable of receiving input and generating an output dependent thereon. In one embodiment, a lexer or a miniparser capable of lexical analysis receives certain code and provides an abstract syntax tree. Each miniparser performs operations on a set of syntactical constructs to produce a corresponding output syntax tree, which in turn may become an input syntax tree for a next miniparser which may operate on a different set of syntactical constructs.
    Type: Application
    Filed: January 28, 2002
    Publication date: June 5, 2003
    Applicant: Sun Microsystems, Inc.
    Inventor: David M. Ungar
  • Patent number: 6279148
    Abstract: One embodiment of the present invention facilitates low-level systems programming in dynamic, “pointer-safe” programming languages, which disallow arbitrary references through pointers. It does so by avoiding the creation of object instances in the traditional fashion. Rather, a large heap is defined to store dynamically allocated data objects, and explicit memory management operations are implemented in order to allocate and deallocate memory from the heap. Traditional object pointers are replaced by indices to the heap. The described technique allows the bypassing of traditional object allocation, thus making object allocation static from the viewpoint of the pointer-safe programming language—with the exception of the large array that is allocated to serve as the heap. Since the new memory system is implemented on top of an existing automatic memory system, varying degrees of automatic and manual memory management are possible.
    Type: Grant
    Filed: October 13, 1998
    Date of Patent: August 21, 2001
    Assignee: Sun Microsystems, Inc.
    Inventors: Antero K. P. Taivalsaari, David M. Ungar
  • Patent number: 6275985
    Abstract: One embodiment of the present invention provides a system that facilitates developing an application that implements garbage collection (such as a virtual machine) using a first compiler and then compiling the application with a second compiler that provides support for efficient garbage collection. The system operates by developing the application using a first compiler and proxy objects, so that during execution of the application, pointers within the system stack point indirectly to data objects through proxy objects. These proxy objects are used during the garbage collection process to identify data objects that are referenced by the pointers within the system stack. Next, the system provides a second compiler that produces stack maps that identify pointers in the system stack. This allows the garbage collection process to identify objects referenced by the pointers in the system stack without using proxy objects.
    Type: Grant
    Filed: December 17, 1998
    Date of Patent: August 14, 2001
    Assignee: Sun Microsystems, Inc
    Inventors: David M. Ungar, Antero K. P. Taivalsaari
  • Patent number: 6199075
    Abstract: Apparatus, methods, systems and computer program products are disclosed describing generational garbage collection on a card-marked heap memory shared by multiple processing units. When one of the processing units detects that the free space available for node creation is below a threshold, that processing unit pauses its heap mutation processes and signals the other processing units to also pause mutation. After the other processing units pause heap mutation, the processing units then proceed to execute generational garbage collection procedures on the shared heap. The generational garbage collection procedures for each processing unit are driven by pointers stored in each processing unit's register, stack and static variables along with pointers within a specified partition of the shared card-marked heap. The processing units resume mutation of the heap once they all complete their garbage collection processes.
    Type: Grant
    Filed: May 30, 1997
    Date of Patent: March 6, 2001
    Assignee: Sun Microsystems, Inc.
    Inventors: David M. Ungar, Mario I. Wolczko
  • Patent number: 6115782
    Abstract: Apparatus, methods, systems, and computer program products are disclosed that locate a modified pointer value in a carded heap memory. A plurality of nodes is allocated from the carded heap memory. The carded heap contains at least one structure that indicates the existence or non-existence of a node reference for each card. For those cards containing a node reference the structure also includes the offset from the start of the card to the node reference. A card index or pointer within a card (that is used to generate a card index) is given to the invention. The card index is used to specify a first card. A second card is found given the card index. The invention then follows, starting at the first node in the second card and using the node advance value for each followed node, the nodes in the carded memory area until it locates the node containing the pointer in the first card.
    Type: Grant
    Filed: April 23, 1997
    Date of Patent: September 5, 2000
    Assignee: Sun Micosystems, Inc.
    Inventors: Mario I. Wolczko, David M. Ungar
  • Patent number: 6094664
    Abstract: Apparatus, methods, systems and computer program products are disclosed that improve the efficiency of mutator programs and garbage collection programs that process objects containing null pointers in an object-oriented programming environment with statically typed variables. This improvement is achieved by allocating a NULL object within a controlled access memory area. Access to the NULL object is enabled when garbage collecting nodes and disabled while the mutator accesses the nodes.
    Type: Grant
    Filed: May 30, 1997
    Date of Patent: July 25, 2000
    Assignee: Sun Microsystems
    Inventor: David M. Ungar
  • Patent number: 6085035
    Abstract: Apparatus, methods, and computer program products are disclosed for providing optimized access to pointer or externally-tagged primitive type data-values. The invention maintains a type identifier external to the variable that contains the data-value. The invention determines the type distribution of data-values stored in the variable and optimizes access to the variable accordingly. Some of these optimizations are targeted towards called routines and the call sites for the called routines. Other optimizations are targeted towards object-oriented programming language implementations. These optimizations generate optimized versions of a class/map. Objects are linked to the optimized versions of the class/map depending on the type configuration of the data-values stored in the object. Thus, the invention optimizes access to variables in the object when the object contains commonly used type configurations.
    Type: Grant
    Filed: September 9, 1997
    Date of Patent: July 4, 2000
    Assignee: Sun Microsystems, Inc.
    Inventor: David M. Ungar
  • Patent number: 6078744
    Abstract: Apparatus, methods, and computer program products are disclosed for improving the performance of subsequent compilations of a source program. The initial compilation of the source program journals computationally expensive intermediate compilation data. Subsequent compilations, instead of recomputing this data, uses the intermediate compilation data from the journal. Thus the compiler has improved performance during subsequent compilations of the source program. One aspect of the invention applies to dynamic compilers to reduce the startup delay caused by compiling the source program when the program is invoked.
    Type: Grant
    Filed: August 1, 1997
    Date of Patent: June 20, 2000
    Assignee: Sun Microsystems
    Inventors: Mario I. Wolczko, David M. Ungar
  • Patent number: 5920876
    Abstract: One embodiment of the present invention presents a method and apparatus for efficiently performing garbage collection on objects defined within an object-oriented programming system. Garbage collection typically involves following pointers to determine which objects are presently being referenced so that other objects, that are not being referenced, can be removed. To this end, the present invention maintains a bitmap for each object that indicates which variables in the object are pointer variables and which variables are non-pointer variables. A garbage collection process examines the bitmap, and on the basis of the pattern contained in the bitmap jumps to a particular routine that is tailored to garbage collect the particular pattern of pointer and non-pointer values in the object. Note that the system includes a routine tailored for each possible bitmap pattern.
    Type: Grant
    Filed: April 23, 1997
    Date of Patent: July 6, 1999
    Assignee: Sun Microsystems, Inc.
    Inventors: David M. Ungar, Mario I. Wolczko
  • Patent number: 5911144
    Abstract: Apparatus, methods, systems, and computer program products are disclosed that generate a hash value for a node allocated from a generational garbage collected heap. The heap is associated with a global hash offset that is updated on every scavenge operation. This global hash offset is added to the address of the node to generate a hash offset. The hash offset is only generated upon a generate hash condition. The generate hash condition occurs when the hash value for the node is accessed or when the node is copied from the creation area. Thus, the invention generates hash values for nodes that require them while in the creation area of the heap. When the active nodes are copied from the creation area of the heap the hash value is generated as part of the copy process without additional memory accesses.
    Type: Grant
    Filed: April 23, 1997
    Date of Patent: June 8, 1999
    Assignee: Sun Microsystems, Inc.
    Inventors: David C. Schwartz, David M. Ungar
  • Patent number: 5900001
    Abstract: Apparatus, methods, systems and computer program products are disclosed describing a data structure and associated processes that optimize garbage collection techniques. The disclosed data structure can be used as an instantiated object in an object-oriented programming environment. The data structure uses a data structure header to separate the portion of the data structure that contains pointer values from the portion of the data structure that contains non-pointer values. The contents of the first word of the data structure header is distinguishable from any pointer value. Thus, a garbage collection procedure can more rapidly locate the pointer values in the data structure. Another advantage of this data structure organization, when applied to instantiated objects, is that the position of an instance variable (with respect to the object header structure) remains constant for all instantiated objects including those based on subclasses of the original class.
    Type: Grant
    Filed: April 23, 1997
    Date of Patent: May 4, 1999
    Assignee: Sun Microsystems, Inc.
    Inventors: Mario I. Wolczko, David M. Ungar