Patents by Inventor Curtis Man

Curtis Man 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: 9639382
    Abstract: An interactive intermediate representation (IR) viewer displays a view of the intermediate representation of client side code during a just-in-time compilation of the client side code in a live environment. The interactive IR viewer allows a developer to request the intermediate representation generated during one or more of the phases of the JIT compilation of the client side code. Modifications may be made to the intermediate representation before executable code is generated. The analysis of the intermediate representation during the live environment provides a developer with insight as to how the executable code is being compiled so that improvements may be made to improve the performance of the client side code.
    Type: Grant
    Filed: May 15, 2014
    Date of Patent: May 2, 2017
    Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC.
    Inventors: Curtis Man, Douglas Charles Ilijev, Brahama Giri Abhijith Chatra
  • Patent number: 9569342
    Abstract: Systems, methods and computer program products are described herein for testing a system that is designed to optimize the execution of code within an application or other computer program based on profile data collected during the execution of such code. The embodiments described herein utilize what is referred to as a “profile data mutator” to mutate or modify the profile data between the point when it is collected and the point when it is used to apply an optimization. By mutating the profile data at this point, testing of a system for optimized code execution can be significantly more thorough. Furthermore, such profile data mutation leads to a more scalable and efficient testing technique for profile-guided systems for optimized code execution.
    Type: Grant
    Filed: December 20, 2012
    Date of Patent: February 14, 2017
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Arjun Bijanki, Sandeep Agarwal, Curtis Man, Louis Lafreniere, Ritesh Parikh, Sankar Sundaram
  • Publication number: 20150331701
    Abstract: An interactive intermediate representation (IR) viewer displays a view of the intermediate representation of client side code during a just-in-time compilation of the client side code in a live environment. The interactive IR viewer allows a developer to request the intermediate representation generated during one or more of the phases of the JIT compilation of the client side code. Modifications may be made to the intermediate representation before executable code is generated. The analysis of the intermediate representation during the live environment provides a developer with insight as to how the executable code is being compiled so that improvements may be made to improve the performance of the client side code.
    Type: Application
    Filed: May 15, 2014
    Publication date: November 19, 2015
    Applicant: Microsoft Corporation
    Inventors: Curtis Man, Douglas Charles Ilijev, Brahama Giri Abhijith Chatra
  • Patent number: 9104434
    Abstract: A code generator may emit a direct access code for accessing a property of an object under conditions which promote type safety in a dynamically typed programming language. The direct access code accesses a value of the property using a hard-coded offset into the object's memory region. In some cases, the direct access code accesses the value after a single type check that guards a sequence of property accesses, including at least one prior sequence member. In some cases, type check code compares an object's type to a designated guard type of an equivalent type cache. An object type may be checked for property-specific access equivalence with types in the equivalent type cache by using a property equivalence record which is associated with the equivalent type cache. When types are not access-equivalent with regard to a property, type safety is preserved by emitting nondirect access code for accessing the property.
    Type: Grant
    Filed: September 18, 2014
    Date of Patent: August 11, 2015
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Jedrzej (“Andrew”) Miadowicz, Paul Adrian Leathers, Louis Lafreniere, Brahma Giri Abhijith Chatra, Curtis Man
  • Publication number: 20150178057
    Abstract: A code generator may emit a direct access code for accessing a property of an object under conditions which promote type safety in a dynamically typed programming language. The direct access code accesses a value of the property using a hard-coded offset into the object's memory region. In some cases, the direct access code accesses the value after a single type check that guards a sequence of property accesses, including at least one prior sequence member. In some cases, type check code compares an object's type to a designated guard type of an equivalent type cache. An object type may be checked for property-specific access equivalence with types in the equivalent type cache by using a property equivalence record which is associated with the equivalent type cache. When types are not access-equivalent with regard to a property, type safety is preserved by emitting nondirect access code for accessing the property.
    Type: Application
    Filed: September 18, 2014
    Publication date: June 25, 2015
    Inventors: Jedrzej ("Andrew") Miadowicz, Paul Adrian Leathers, Louis Lafreniere, Brahma Giri Abhijith Chatra, Curtis Man
  • Patent number: 8924437
    Abstract: A script engine for a dynamic language can collect memory allocation information for dynamic objects created by the scripting engine and for dynamic objects created by the script engine host. A native interface can be exposed to a client comprising a software development tool. The software development tool can be a third-party tool. In response to a query, the script engine can take a snapshot of a garbage collector heap and return an object record for each dynamic object in the heap. The object information can include memory allocation information, object type and other information. Multiple snapshots can be taken and the delta between snapshots can be determined and sent to a requestor.
    Type: Grant
    Filed: March 13, 2012
    Date of Patent: December 30, 2014
    Assignee: Microsoft Corporation
    Inventors: Gaurav Seth, Michael C. Fanning, Jennifer Hamilton, Curtis Man
  • Patent number: 8819649
    Abstract: Methods, systems, and computer program products are provided for profiling source code to enable improved source code execution. A runtime engine includes a parser, a bytecode generator, an execution controller, an interpreter, a just-in-time (JIT) compiler, and a profile generator. The parser receives source code coded in a dynamic language and parses the source code to generate parsed source code. The bytecode generator converts the parsed source code to bytecode. The interpreter is configured to interpret the bytecode when enabled by the execution controller. The JIT compiler is configured to compile the bytecode when enabled by the execution controller. The profile generator generates profile information from the bytecode and stores the profile information. The execution controller enables the interpreter or the JIT compiler to perform their respective functions based on the profile information.
    Type: Grant
    Filed: September 9, 2011
    Date of Patent: August 26, 2014
    Assignee: Microsoft Corporation
    Inventors: Louis Lafreniere, Curtis Man, Jedrzej Miadowicz, Paul Leathers, Jitendra Kumar, Arjun Bijanki
  • Publication number: 20140181591
    Abstract: Systems, methods and computer program products are described herein for testing a system that is designed to optimize the execution of code within an application or other computer program based on profile data collected during the execution of such code. The embodiments described herein utilize what is referred to as a “profile data mutator” to mutate or modify the profile data between the point when it is collected and the point when it is used to apply an optimization. By mutating the profile data at this point, testing of a system for optimized code execution can be significantly more thorough. Furthermore, such profile data mutation leads to a more scalable and efficient testing technique for profile-guided systems for optimized code execution.
    Type: Application
    Filed: December 20, 2012
    Publication date: June 26, 2014
    Applicant: MICROSOFT CORPORATION
    Inventors: Arjun Bijanki, Sandeep Agarwal, Curtis Man, Louis Lafreniere, Ritesh Parikh, Sankar Sundaram
  • Publication number: 20130246417
    Abstract: A script engine for a dynamic language can collect memory allocation information for dynamic objects created by the scripting engine and for dynamic objects created by the script engine host. A native interface can be exposed to a client comprising a software development tool. The software development tool can be a third-party tool. In response to a query, the script engine can take a snapshot of a garbage collector heap and return an object record for each dynamic object in the heap. The object information can include memory allocation information, object type and other information. Multiple snapshots can be taken and the delta between snapshots can be determined and sent to a requestor.
    Type: Application
    Filed: March 13, 2012
    Publication date: September 19, 2013
    Applicant: MICROSOFT CORPORATION
    Inventors: Gaurav Seth, Michael C. Fanning, Jennifer Hamilton, Curtis Man
  • Publication number: 20130205282
    Abstract: Optimized compiled code can be generated from bytecode derived from a program written in a dynamic language such as JavaScript. Optimizations can be based on one or more assumptions. During execution of the optimized compiled code, the assumption or assumptions on which the optimization was based can be examined for validity. In response to determining that the optimization was based on an invalid assumption or assumptions, execution of the optimized code can stop, the state of variables used by an interpreter can be restored and execution of the program can resume in the interpreter using the unoptimized bytecode derived from the program. Resumption of the program can resume at the point in the bytecode analogous to the point in the optimized compiled code at which the assumption or assumptions was determined to be false.
    Type: Application
    Filed: February 7, 2012
    Publication date: August 8, 2013
    Applicant: MICROSOFT CORPORATION
    Inventors: Louis Lafreniere, Curtis Man
  • Publication number: 20130067441
    Abstract: Methods, systems, and computer program products are provided for profiling source code to enable improved source code execution. A runtime engine includes a parser, a bytecode generator, an execution controller, an interpreter, a just-in-time (JIT) compiler, and a profile generator. The parser receives source code coded in a dynamic language and parses the source code to generate parsed source code. The bytecode generator converts the parsed source code to bytecode. The interpreter is configured to interpret the bytecode when enabled by the execution controller. The JIT compiler is configured to compile the bytecode when enabled by the execution controller. The profile generator generates profile information from the bytecode and stores the profile information. The execution controller enables the interpreter or the JIT compiler to perform their respective functions based on the profile information.
    Type: Application
    Filed: September 9, 2011
    Publication date: March 14, 2013
    Applicant: MICROSOFT CORPORATION
    Inventors: Louis Lafreniere, Curtis Man, Jedrzej Miadowicz, Paul Leathers, Jitendra Kumar, Arjun Bijanki