Patents by Inventor Neal M. Gafter

Neal M. Gafter 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: 11372630
    Abstract: Efficient immutable syntax representation with parent pointers under incremental change is enabled by creating a data structure comprising at least one tree structure that allows both upward and downward references in the tree and a tree structure that is immutable (read-only), and allows parts of itself to be re-used in other data structures. The data structure described enables tools to search and target particular sub trees. The fragment of the tree representing the targeted sub tree is produced as it is used. The rest of the tree is not produced. The read-only tree retains relative information, allowing it to be reassembled and shared.
    Type: Grant
    Filed: February 17, 2020
    Date of Patent: June 28, 2022
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Matthew J. Warren, Mads Torgersen, Renaud Paquay, Neal M. Gafter, Jared Parsons, David N. Schach, Aleksey V. Tsingauz, Peter Golde, Kevin Andrew Pilch, Karen Liu
  • Publication number: 20200183667
    Abstract: Efficient immutable syntax representation with parent pointers under incremental change is enabled by creating a data structure comprising at least one tree structure that allows both upward and downward references in the tree and a tree structure that is immutable (read-only), and allows parts of itself to be re-used in other data structures. The data structure described enables tools to search and target particular sub trees. The fragment of the tree representing the targeted sub tree is produced as it is used. The rest of the tree is not produced. The read-only tree retains relative information, allowing it to be reassembled and shared.
    Type: Application
    Filed: February 17, 2020
    Publication date: June 11, 2020
    Inventors: Matthew J. Warren, Avner Y. Aharoni, Mads Torgersen, Renaud Paquay, Neal M. Gafter, Jared Parsons, David N. Schach, Aleksey V. Tsingauz, Peter Golde, Kevin Pilch-Bisson, Karen Liu
  • Patent number: 10564944
    Abstract: Efficient immutable syntax representation with parent pointers under incremental change is enabled by creating a data structure comprising at least one tree structure that allows both upward and downward references in the tree and a tree structure that is immutable (read-only), and allows parts of itself to be re-used in other data structures. The data structure described enables tools to search and target particular sub trees. The fragment of the tree representing the targeted sub tree is produced as it is used. The rest of the tree is not produced. The read-only tree retains relative information, allowing it to be reassembled and shared.
    Type: Grant
    Filed: January 7, 2010
    Date of Patent: February 18, 2020
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Matthew J. Warren, Avner Y. Aharoni, Mads Torgersen, Renaud Paquay, Neal M. Gafter, Jared Parsons, David N. Schach, Aleksey V. Tsingauz, Peter Golde, Kevin Pilch-Bisson, Karen Liu
  • Patent number: 9003377
    Abstract: Unsuspended co-routines are handled by the machine call stack mechanism in which the stack grows and shrinks as recursive calls are made and returned from. When a co-routine is suspended, however, additional call stack processing is performed. A suspension message is issued, and the entire resume-able part of the call stack is removed, and is copied to the heap. A frame that returns control to a driver method (a resumer) is copied to the call stack so that resumption of the co-routine does not recursively reactivate the whole call stack. Instead the resumer reactivates only the topmost or most current frame called the leaf frame. When a co-routine is suspended, it does not return to its caller, but instead returns to the resumer that has reactivated it.
    Type: Grant
    Filed: January 7, 2010
    Date of Patent: April 7, 2015
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Neal M. Gafter, Mads Torgersen, Henricus Johannes Maria Meijer, Niklas Gustafsson
  • Patent number: 8549506
    Abstract: APIs are provided, that are external to a programming language but that provide functionality that can be plugged into a language compiler. The provided APIs tailor functionality associated with asynchronous programming, iterators or writing symmetric co-routines using a generalized pattern-based approach. Several types of resumable methods are provided in the APIs which can be applied to method bodies written in traditional program code. Syntactically distinguishable control points in method bodies written in traditional program code invoke transformation of the code by the compiler using the external APIs. The transformed code enables the pausing and resumption of the code sandwiched between control points in the transformed code. The source code contained within a method having control points in it is transformed so that code within the method can be executed in discrete parts, each part starting and ending at a control point in the transformed code.
    Type: Grant
    Filed: April 27, 2010
    Date of Patent: October 1, 2013
    Assignee: Microsoft Corporation
    Inventors: Henricus Johannes Maria Meijer, Mads Torgersen, Neal M. Gafter, Niklas Gustafsson
  • Publication number: 20130152061
    Abstract: An augmented parser can create an augmented parse tree that captures all the information in the source code as additional elements. Information included in the augmented parse tree can include whitespace, comments, pre-processor directives, line continuation characters, missing text, text errors, and original text. Thus, the augmented parse tree can be used to fully reconstruct the original source code, character for character, including spaces, comments, and incorrect code. The improved parser can store syntactic error information in the original source code in the parse tree. The augmented parse tree can be used to generate or modify source code. The parse tree created by the augmented parser can be used for incremental parsing to create a new augmented parse tree after a change.
    Type: Application
    Filed: December 12, 2011
    Publication date: June 13, 2013
    Applicant: Microsoft Corporation
    Inventors: Peter Golde, Matthew J. Warren, Neal M. Gafter, HeeJae Chang
  • Publication number: 20110265070
    Abstract: APIs are provided, that are external to a programming language but that provide functionality that can be plugged into a language compiler. The provided APIs tailor functionality associated with asynchronous programming, iterators or writing symmetric co-routines using a generalized pattern-based approach. Several types of resumable methods are provided in the APIs which can be applied to method bodies written in traditional program code. Syntactically distinguishable control points in method bodies written in traditional program code invoke transformation of the code by the compiler using the external APIs. The transformed code enables the pausing and resumption of the code sandwiched between control points in the transformed code. The source code contained within a method having control points in it is transformed so that code within the method can be executed in discrete parts, each part starting and ending at a control point in the transformed code.
    Type: Application
    Filed: April 27, 2010
    Publication date: October 27, 2011
    Applicant: Microsoft Corporation
    Inventors: Henricus Johannes Maria Meijer, Mads Torgersen, Neal M. Gafter, Niklas Gustafsson
  • Publication number: 20110167248
    Abstract: Unsuspended co-routines are handled by the machine call stack mechanism in which the stack grows and shrinks as recursive calls are made and returned from. When a co-routine is suspended, however, additional call stack processing is performed. A suspension message is issued, and the entire resume-able part of the call stack is removed, and is copied to the heap. A frame that returns control to a driver method (a resumer) is copied to the call stack so that resumption of the co-routine does not recursively reactivate the whole call stack. Instead the resumer reactivates only the topmost or most current frame called the leaf frame. When a co-routine is suspended, it does not return to its caller, but instead returns to the resumer that has reactivated it.
    Type: Application
    Filed: January 7, 2010
    Publication date: July 7, 2011
    Applicant: Microsoft Corporation
    Inventors: Neal M. Gafter, Mads Torgersen, Henricus Johannes Maria Meijer, Niklas Gustafsson
  • Publication number: 20110167088
    Abstract: Efficient immutable syntax representation with parent pointers under incremental change is enabled by creating a data structure comprising at least one tree structure that allows both upward and downward references in the tree and a tree structure that is immutable (read-only), and allows parts of itself to be re-used in other data structures. The data structure described enables tools to search and target particular sub trees. The fragment of the tree representing the targeted sub tree is produced as it is used. The rest of the tree is not produced. The read-only tree retains relative information, allowing it to be reassembled and shared.
    Type: Application
    Filed: January 7, 2010
    Publication date: July 7, 2011
    Applicant: Microsoft Corporation
    Inventors: Matthew J. Warren, Avner Y. Aharoni, Mads Torgersen, Renaud Paquay, Neal M. Gafter, Jared Parsons, David N. Schach, Aleksey V. Tsingauz, Peter Golde, Kevin Pilch-Bisson, Karen Liu
  • Patent number: 7263687
    Abstract: One embodiment of the present invention provides a system that facilitates use of an object-oriented enumerated type within a computer program. During operation, the system receives source code for the computer program, wherein the source code contains a declaration for an enumerated type. This declaration specifies a fixed number of enumeration constants that comprise the enumerated type. Next, the system defines the enumerated type using a class defined within an object-oriented programming language, wherein the class includes a constant for each enumeration constant specified in the declaration. If the declaration additionally contains one or more method declarations, these methods are present on the defined class.
    Type: Grant
    Filed: September 9, 2002
    Date of Patent: August 28, 2007
    Assignee: Sun Microsystems, Inc.
    Inventors: Joshua J. Bloch, Neal M. Gafter
  • Patent number: 7080369
    Abstract: Improved techniques for reducing the size of compiler products are disclosed. The techniques facilitate reduction of size by providing differential schemes aimed at producing compiler related information in a compressed form. The compressed compiler related information include symbol names associated with symbols encountered in programming languages. The improved techniques yield improved compilation times and compiler products that utilize substantially less storage space (e.g., disk storage space).
    Type: Grant
    Filed: August 28, 2000
    Date of Patent: July 18, 2006
    Assignee: Sun Microsystems, Inc.
    Inventors: Lawrence A. Crowl, Neal M. Gafter
  • Patent number: 6718438
    Abstract: The present invention uses feedback to determine the size of an object cache. The size of the cache, (i.e., its budget), varies and is determined based on feedback from the persistent object system. Persistent objects are evicted from the cache if the storage for persistent objects exceeds the budget. If the storage is less than the budget then persistent objects in the heap are retained while new persistent objects are added to the cache.
    Type: Grant
    Filed: December 13, 2000
    Date of Patent: April 6, 2004
    Assignee: Sun Microsystems, Inc.
    Inventors: Brian T. Lewis, Bernd J. W. Mathiske, Neal M. Gafter, Michael J. Jordan
  • Publication number: 20040049764
    Abstract: One embodiment of the present invention provides a system that facilitates use of an object-oriented enumerated type within a computer program. During operation, the system receives source code for the computer program, wherein the source code contains a declaration for an enumerated type. This declaration specifies a fixed number of enumeration constants that comprise the enumerated type. Next, the system defines the enumerated type using a class defined within an object-oriented programming language, wherein the class includes a constant for each enumeration constant specified in the declaration. If the declaration additionally contains one or more method declarations, these methods are present on the defined class.
    Type: Application
    Filed: September 9, 2002
    Publication date: March 11, 2004
    Inventors: Joshua J. Bloch, Neal M. Gafter
  • Publication number: 20020073283
    Abstract: The present invention uses feedback to determine the size of an object cache. The size of the cache, (i.e., its budget), varies and is determined based on feedback from the persistent object system. Persistent objects are evicted from the cache if the storage for persistent objects exceeds the budget. If the storage is less than the budget then persistent objects in the heap are retained while new persistent objects are added to the cache.
    Type: Application
    Filed: December 13, 2000
    Publication date: June 13, 2002
    Inventors: Brian T. Lewis, Bernd J.W. Mathiske, Neal M. Gafter, Michael J. Jordan
  • Patent number: 5666296
    Abstract: The method comprises the steps of converting the algorithm into a control flow graph having a plurality of nodes, each node representing at least one of the plurality of statements. The control flow graph further includes a conditional branching node for the data-dependent conditional branching statement. Reverse dominators are then computed for each of the plurality of nodes, from which a meet point node for each conditional branching node is derived. The method further provides for constructing a shadow symbol table housing the variables, and constructing a duplicate shadow symbol table for each possible value of the datum in response to the conditional branching node. The conditional branching node is also evaluated by assuming each possible value of the datum for each branch and assigning symbolic values to each of the variables in the shadow symbol table. The nodes contained in each branch are evaluated until the meet point node is reached. The duplicate shadow symbol tables are then merged.
    Type: Grant
    Filed: December 31, 1991
    Date of Patent: September 9, 1997
    Assignee: Texas Instruments Incorporated
    Inventor: Neal M. Gafter
  • Patent number: 5650948
    Abstract: A method for symbolic evaluation of an algorithm is provided. The algorithm has at least one conditional branching statement dependent on the value of at least one input datum. The method comprises the steps of converting the algorithm into a control flow graph having a plurality of nodes, each node representing at least one of the plurality of statements. The control flow graph further includes a conditional branching node for the data-dependent conditional branching statement. Reverse dominators are then computed for each of the plurality of nodes, from which a meet point node for each conditional branching node is derived. The method further provides for constructing a shadow symbol table housing the variables, and constructing a duplicate shadow symbol table for each possible value of the datum in response the conditional branching node.
    Type: Grant
    Filed: June 7, 1995
    Date of Patent: July 22, 1997
    Assignee: Texas Instruments Incorporated
    Inventor: Neal M. Gafter