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: 9639382Abstract: 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: GrantFiled: May 15, 2014Date of Patent: May 2, 2017Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC.Inventors: Curtis Man, Douglas Charles Ilijev, Brahama Giri Abhijith Chatra
-
Patent number: 9569342Abstract: 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: GrantFiled: December 20, 2012Date of Patent: February 14, 2017Assignee: Microsoft Technology Licensing, LLCInventors: Arjun Bijanki, Sandeep Agarwal, Curtis Man, Louis Lafreniere, Ritesh Parikh, Sankar Sundaram
-
Publication number: 20150331701Abstract: 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: ApplicationFiled: May 15, 2014Publication date: November 19, 2015Applicant: Microsoft CorporationInventors: Curtis Man, Douglas Charles Ilijev, Brahama Giri Abhijith Chatra
-
Patent number: 9104434Abstract: 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: GrantFiled: September 18, 2014Date of Patent: August 11, 2015Assignee: Microsoft Technology Licensing, LLCInventors: Jedrzej (“Andrew”) Miadowicz, Paul Adrian Leathers, Louis Lafreniere, Brahma Giri Abhijith Chatra, Curtis Man
-
Publication number: 20150178057Abstract: 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: ApplicationFiled: September 18, 2014Publication date: June 25, 2015Inventors: Jedrzej ("Andrew") Miadowicz, Paul Adrian Leathers, Louis Lafreniere, Brahma Giri Abhijith Chatra, Curtis Man
-
Patent number: 8924437Abstract: 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: GrantFiled: March 13, 2012Date of Patent: December 30, 2014Assignee: Microsoft CorporationInventors: Gaurav Seth, Michael C. Fanning, Jennifer Hamilton, Curtis Man
-
Patent number: 8819649Abstract: 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: GrantFiled: September 9, 2011Date of Patent: August 26, 2014Assignee: Microsoft CorporationInventors: Louis Lafreniere, Curtis Man, Jedrzej Miadowicz, Paul Leathers, Jitendra Kumar, Arjun Bijanki
-
Publication number: 20140181591Abstract: 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: ApplicationFiled: December 20, 2012Publication date: June 26, 2014Applicant: MICROSOFT CORPORATIONInventors: Arjun Bijanki, Sandeep Agarwal, Curtis Man, Louis Lafreniere, Ritesh Parikh, Sankar Sundaram
-
Publication number: 20130246417Abstract: 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: ApplicationFiled: March 13, 2012Publication date: September 19, 2013Applicant: MICROSOFT CORPORATIONInventors: Gaurav Seth, Michael C. Fanning, Jennifer Hamilton, Curtis Man
-
Publication number: 20130205282Abstract: 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: ApplicationFiled: February 7, 2012Publication date: August 8, 2013Applicant: MICROSOFT CORPORATIONInventors: Louis Lafreniere, Curtis Man
-
Publication number: 20130067441Abstract: 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: ApplicationFiled: September 9, 2011Publication date: March 14, 2013Applicant: MICROSOFT CORPORATIONInventors: Louis Lafreniere, Curtis Man, Jedrzej Miadowicz, Paul Leathers, Jitendra Kumar, Arjun Bijanki