Patents by Inventor Christopher Arthur Lattner
Christopher Arthur Lattner 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: 20180260199Abstract: A method and an apparatus for application submission and distribution based on an intermediate code are described. The intermediate code may be received at a server device and stored in a data storage. The intermediate code may have been built from a source code. The intermediate code may include one or more build options applied for building an executable code from the source code. The executable code may be provided to target devices of a processor platform to perform data processing operations specified in the source code. In one embodiment, a particular executable code may be generated from the intermediate code at the server device to target a particular processor platform according to the build options embedded in the intermediate code. The particular executable code may be forwarded to a device requesting for an application corresponding to the particular executable code to perform the data processing operations.Type: ApplicationFiled: May 9, 2018Publication date: September 13, 2018Inventors: Evan Cheng, Robert P. Wilson, Christopher Arthur Lattner, James Henry Grosbach, Nick Kledzik, Shengzhao Wu
-
Publication number: 20160357530Abstract: A method and an apparatus for application submission and distribution based on an intermediate code are described. The intermediate code may be received at a server device and stored in a data storage. The intermediate code may have been built from a source code. The intermediate code may include one or more build options applied for building an executable code from the source code. The executable code may be provided to target devices of a processor platform to perform data processing operations specified in the source code. In one embodiment, a particular executable code may be generated from the intermediate code at the server device to target a particular processor platform according to the build options embedded in the intermediate code. The particular executable code may be forwarded to a device requesting for an application corresponding to the particular executable code to perform the data processing operations.Type: ApplicationFiled: June 5, 2015Publication date: December 8, 2016Inventors: Evan Cheng, Robert P. Wilson, Christopher Arthur Lattner, James Henry Grosbach, Nick Kledzik, Shengzhao Wu
-
Publication number: 20150347094Abstract: The subject disclosure relates to methods and systems for facilitating software development. In particular, aspects of the technology relate to a method including steps for receiving source code from a user in an editor window, automatically compiling the source code to produce compiled code, and executing the compiled code to generate an output, wherein the output comprises one or more results from execution of the compiled code. In some aspects, the method can also include steps for providing a results window to the user, the results window displaying at least one of the results from the execution of the compiled code, and providing a visualization window to the user, wherein the visualization window is associated with a progress timeline and wherein the visualization window is configured to display an animation of the at least one of the results from execution of the compiled code.Type: ApplicationFiled: May 28, 2015Publication date: December 3, 2015Inventors: Christopher Arthur Lattner, Donald Matthew Firlik, Katherine Blake Stone, Kenneth Scott Orr, Michael S. Ferris, Tim V. Isted, Maxwell Oliver Drukman
-
Patent number: 9195486Abstract: Observation and analysis based optimization of software code is disclosed. An expected value is chosen for a dynamic attribute that cannot be determined, prior to execution of the associated software code, to be guaranteed to have that expected value at runtime. An optimized version of the software code is generated, including one or more optimizations based on an assumption that the dynamic attribute will have the expected value. Non-exhaustive examples of a dynamic attribute include a variable type; a location in memory; a location in which a global object, property, or variable is stored; the contents of a global function or method; and a value of a global property or variable. A check is performed during execution of the optimized version of the software code, prior to executing the portion that has been optimized based on the assumption, to verify that the dynamic attribute has the expected value.Type: GrantFiled: July 30, 2010Date of Patent: November 24, 2015Assignee: Apple Inc.Inventors: Victor Leonel Hernandez Porras, Christopher Arthur Lattner, Jia-Hong Chen, Eric Marshall Christopher, Roger Scott Hoover, Francois Jouaux, Robert John McCall, Thomas John O'Brien, Pratik Solanki
-
Patent number: 9146759Abstract: Techniques for processing source code written in a traditionally interpreted language such as JavaScript, or another dynamic and/or interpreted language, are disclosed. In one example, compiled code associated with the source code is constructed and executed. An assumption on which a specific aspect of the compiled code is based (e.g., an optimization) is tested at a checkpoint of the compiled code. A roll over to fallback code is performed if the test indicates the assumption is not true.Type: GrantFiled: July 30, 2010Date of Patent: September 29, 2015Assignee: Apple Inc.Inventors: Victor Leonel Hernandez Porras, Christopher Arthur Lattner, Jia-Hong Chen, Eric Marshall Christopher, Roger Scott Hoover, Francois Jouaux, Robert John McCall, Thomas John O'Brien, Pratik Solanki
-
Patent number: 8826253Abstract: Delayed insertion of safepoint related code is disclosed. Optimization processing is performed with respect to an intermediate representation of a source code. The optimized intermediate representation is analyzed programmatically to identify a safepoint and insert safepoint related code associated with the safepoint. In some embodiments, analyzing the optimized intermediate representation programmatically comprises determining where to place the safepoint within a program structure of the source code as reflected in the intermediate representation.Type: GrantFiled: December 15, 2008Date of Patent: September 2, 2014Assignee: Apple Inc.Inventors: Victor Leonel Hernandez Porras, Roger Scott Hoover, Christopher Arthur Lattner, Thomas John O'Brien
-
Patent number: 8806457Abstract: Deferred constant pool generation is disclosed. Optimization processing is performed with respect to an intermediate representation of a source code. The optimized intermediate representation is used to generate a constant pool. In some embodiments, the source code comprises JavaScript, which is used to generate a low level virtual machine (LLVM) or other intermediate representation (IR), which intermediate representation is optimized prior to a constant pool being generated.Type: GrantFiled: December 15, 2008Date of Patent: August 12, 2014Assignee: Apple Inc.Inventors: Victor Leonel Hernandez Porras, Roger Scott Hoover, Christopher Arthur Lattner, Eric Marshall Christopher
-
Patent number: 8752016Abstract: A device-independent intermediate representation of a source code is generated and stored, e.g., in a memory or other storage mechanism. The stored intermediate representation of the source code is used to generate a device-specific machine code corresponding to the source code. The stored intermediate representation may be updated, e.g., periodically, for example by obtaining an updated version of the source code and compiling the updated source code to generate an updated intermediate representation. The stored intermediate representation may be based on source code received from a device that is synchronized with which a compiling device that generates the device-specific machine code. In some cases, the stored intermediate representation may be used to generate for each of a plurality of devices a corresponding device-specific machine code.Type: GrantFiled: December 15, 2008Date of Patent: June 10, 2014Assignee: Apple Inc.Inventors: Victor Leonel Hernandez Porras, Thomas John O'Brien, Roger Scott Hoover, Christopher Arthur Lattner, Eric Marshall Christopher, Pratik Solanki, Jia-Hong Chen, Michael Alan Kahl
-
Patent number: 8645930Abstract: Disclosed herein are systems, methods, and computer-readable storage media for obfuscating by a common function. A system configured to practice the method identifies a set of functions in source code, generates a transformed set of functions by transforming each function of the set of functions to accept a uniform set of arguments and return a uniform type, and merges the transformed set of functions into a single recursive function. The single recursive function can allocate memory in the heap. The stack can contain a pointer to the allocated memory in the heap. The single recursive function can include instructions for creating and explicitly managing a virtual stack in the heap. The virtual stack can emulate what would happen to the real stack if one of the set of functions was called. The system can further compile the source code including the single recursive function.Type: GrantFiled: January 4, 2010Date of Patent: February 4, 2014Assignee: Apple Inc.Inventors: Christopher Arthur Lattner, Tanya Michelle Lattner, Julien Lerouge, Ginger M. Myles, Augustin J. Farrugia, Pierre Betouin
-
Patent number: 8561045Abstract: Techniques for processing computer code are disclosed. In one example, an indication that a computer code is to begin execution at a portion of code other than a starting portion of the code is received, and a runtime state associated with the portion of the code at which execution is to begin is constructed. In some examples, execution of the portion of code is initiated. In some examples, a program counter associated with the portion of the code is used to initiate execution of the code. In some examples, the computer code comprises a fallback code associated with a previously executing code.Type: GrantFiled: July 30, 2010Date of Patent: October 15, 2013Assignee: Apple Inc.Inventors: Victor Leonel Hernandez Porras, Christopher Arthur Lattner, Jia-Hong Chen, Eric Marshall Christopher, Roger Scott Hoover, Francois Jouaux, Robert John McCall, Thomas John O'Brien, Pratik Solanki
-
Patent number: 8341614Abstract: Methods, software media, compilers and programming techniques are described for creating copyable stack-based closures, such as a block, for languages which allocate automatic or local variables on a stack memory structure. In one exemplary method, a data structure of the block is first written to the stack memory structure, and this may be the automatic default operation, at run-time, for the block; then, a block copy instruction, added explicitly (in one embodiment) by a programmer during creation of the block, is executed to copy the block to a heap memory structure. The block includes a function pointer that references a function which uses data in the block.Type: GrantFiled: September 30, 2008Date of Patent: December 25, 2012Assignee: Apple Inc.Inventors: Gerald Blaine Garst, Jr., William Bumgarner, Fariborz Jahanian, Christopher Arthur Lattner
-
Publication number: 20120030661Abstract: Observation and analysis based optimization of software code is disclosed. An expected value is chosen for a dynamic attribute that cannot be determined, prior to execution of the associated software code, to be guaranteed to have that expected value at runtime. An optimized version of the software code is generated, including one or more optimizations based on an assumption that the dynamic attribute will have the expected value. Non-exhaustive examples of a dynamic attribute include a variable type; a location in memory; a location in which a global object, property, or variable is stored; the contents of a global function or method; and a value of a global property or variable. A check is performed during execution of the optimized version of the software code, prior to executing the portion that has been optimized based on the assumption, to verify that the dynamic attribute has the expected value.Type: ApplicationFiled: July 30, 2010Publication date: February 2, 2012Applicant: APPLE INC.Inventors: Victor Leonel Hernandez Porras, Christopher Arthur Lattner, Jia-Hong Chen, Eric Marshall Christopher, Roger Scott Hoover, Francois Jouaux, Robert John McCall, Thomas John O'Brien, Pratik Solanki
-
Publication number: 20120030659Abstract: Techniques for processing computer code are disclosed. In one example, an indication that a computer code is to begin execution at a portion of code other than a starting portion of the code is received, and a runtime state associated with the portion of the code at which execution is to begin is constructed. In some examples, execution of the portion of code is initiated. In some examples, a program counter associated with the portion of the code is used to initiate execution of the code. In some examples, the computer code comprises a fallback code associated with a previously executing code.Type: ApplicationFiled: July 30, 2010Publication date: February 2, 2012Applicant: APPLE INC.Inventors: Victor Leonel Hernandez Porras, Christopher Arthur Lattner, Jia-Hong Chen, Eric Marshall Christopher, Roger Scott Hoover, Francois Jouaux, Robert John McCall, Thomas John O'Brien, Pratik Solanki
-
Publication number: 20120030653Abstract: Techniques for processing source code written in a traditionally interpreted language such as JavaScript, or another dynamic and/or interpreted language, are disclosed. In one example, compiled code associated with the source code is constructed and executed. An assumption on which a specific aspect of the compiled code is based (e.g., an optimization) is tested at a checkpoint of the compiled code. A roll over to fallback code is performed if the test indicates the assumption is not true.Type: ApplicationFiled: July 30, 2010Publication date: February 2, 2012Applicant: APPLE INC.Inventors: Victor Leonel Hernandez Porras, Christopher Arthur Lattner, Jia-Hong Chen, Eric Marshall Christopher, Roger Scott Hoover, Francois Jouaux, Robert John McCall, Thomas John O'Brien, Pratik Solanki
-
Publication number: 20110167414Abstract: Disclosed herein are systems, methods, and computer-readable storage media for obfuscating by a common function. A system configured to practice the method identifies a set of functions in source code, generates a transformed set of functions by transforming each function of the set of functions to accept a uniform set of arguments and return a uniform type, and merges the transformed set of functions into a single recursive function. The single recursive function can allocate memory in the heap. The stack can contain a pointer to the allocated memory in the heap. The single recursive function can include instructions for creating and explicitly managing a virtual stack in the heap. The virtual stack can emulate what would happen to the real stack if one of the set of functions was called. The system can further compile the source code including the single recursive function.Type: ApplicationFiled: January 4, 2010Publication date: July 7, 2011Applicant: Apple Inc.Inventors: Christopher Arthur Lattner, Tanya Michelle Lattner, Julien Lerouge, Ginger M. Myles, Augustin J. Farrugia, Pierre Betouin
-
Publication number: 20100153936Abstract: Deferred constant pool generation is disclosed. Optimization processing is performed with respect to an intermediate representation of a source code. The optimized intermediate representation is used to generate a constant pool. In some embodiments, the source code comprises JavaScript, which is used to generate an LLVM or other intermediate representation (IR), which intermediate representation is optimized prior to a constant pool being generated.Type: ApplicationFiled: December 15, 2008Publication date: June 17, 2010Inventors: Victor Leonel Hernandez Porras, Roger Scott Hoover, Christopher Arthur Lattner, Eric Marshall Christopher
-
Publication number: 20100153912Abstract: Variable type knowledge based call specialization is disclosed. An indication is received that a variable that is an argument of a function or operation the behavior of which depends at least in part on a data type of the argument is of a first data type. Machine code that implements a first behavior that corresponds to the first data type, but not a second behavior that corresponds to a second data type other than the first data type, is generated for the function or operation.Type: ApplicationFiled: December 15, 2008Publication date: June 17, 2010Inventors: Victor Leonel Hernandez Porras, Roger Scott Hoover, Eric Marshall Christopher, Christopher Arthur Lattner, Thomas John O'Brien, Pratik Solanki, Jia-Hong Chen
-
Publication number: 20100153935Abstract: Delayed insertion of safepoint related code is disclosed. Optimization processing is performed with respect to an intermediate representation of a source code. The optimized intermediate representation is analyzed programmatically to identify a safepoint and insert safepoint related code associated with the safepoint. In some embodiments, analyzing the optimized intermediate representation programmatically comprises determining where to place the safepoint within a program structure of the source code as reflected in the intermediate representation.Type: ApplicationFiled: December 15, 2008Publication date: June 17, 2010Inventors: Victor Leonel Hernandez Porras, Roger Scott Hoover, Christopher Arthur Lattner, Thomas John O'Brien
-
Publication number: 20100153929Abstract: A device-independent intermediate representation of a source code is generated and stored, e.g., in a memory or other storage mechanism. The stored intermediate representation of the source code is used to generate a device-specific machine code corresponding to the source code. The stored intermediate representation may be updated, e.g., periodically, for example by obtaining an updated version of the source code and compiling the updated source code to generate an updated intermediate representation. The stored intermediate representation may be based on source code received from a device that is synchronized with which a compiling device that generates the device-specific machine code. In some cases, the stored intermediate representation may be used to generate for each of a plurality of devices a corresponding device-specific machine code.Type: ApplicationFiled: December 15, 2008Publication date: June 17, 2010Inventors: Victor Leonel Hernandez Porras, Thomas John O'Brien, Roger Scott Hoover, Christopher Arthur Lattner, Eric Marshall Christopher, Pratik Solanki, Jia-Hong Chen, Michael Alan Kahl
-
Publication number: 20090307431Abstract: Methods, software media, compilers and programming techniques are described for creating copyable stack-based closures, such as a block, for languages which allocate automatic or local variables on a stack memory structure. In one exemplary method, a data structure of the block is first written to the stack memory structure, and this may be the automatic default operation, at run-time, for the block; then, a block copy instruction, added explicitly (in one embodiment) by a programmer during creation of the block, is executed to copy the block to a heap memory structure. The block includes a function pointer that references a function which uses data in the block.Type: ApplicationFiled: September 30, 2008Publication date: December 10, 2009Inventors: Gerald Blaine Garst, JR., William Bumgarner, Fariborz Jahanian, Christopher Arthur Lattner