Patents by Inventor Filip J. Pizlo
Filip J. Pizlo 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: 20240111669Abstract: One embodiment provides for a non-transitory machine-readable medium storing instructions to cause one or more processors to perform operations comprising receiving an instruction to dynamically allocate memory for an object of a data type and dynamically allocating memory for the object from a heap instance that is specific to the data type for the object, the heap instance including a memory allocator for the data type, the memory allocator generated at compile time for the instruction based on a specification of the data type for the heap instance.Type: ApplicationFiled: December 13, 2023Publication date: April 4, 2024Inventor: Filip J. PIZLO
-
Publication number: 20240045678Abstract: In an embodiment, dynamically-generated code may be supported in the system by ensuring that the code either remains executing within a predefined region of memory or exits to one of a set of valid exit addresses. Software embodiments are described in which the dynamically-generated code is scanned prior to permitting execution of the dynamically-generated code to ensure that various criteria are met including exclusion of certain disallowed instructions and control of branch target addresses. Hardware embodiments are described in which the dynamically-generated code is permitted to executed but is monitored to ensure that the execution criteria are met.Type: ApplicationFiled: October 11, 2023Publication date: February 8, 2024Inventors: Jeffrey E. Gonion, Michael D. Snyder, Filip J. Pizlo
-
Patent number: 11880298Abstract: One embodiment provides for a non-transitory machine-readable medium storing instructions to cause one or more processors to perform operations comprising receiving an instruction to dynamically allocate memory for an object of a data type and dynamically allocating memory for the object from a heap instance that is specific to the data type for the object, the heap instance including a memory allocator for the data type, the memory allocator generated at compile time for the instruction based on a specification of the data type for the heap instance.Type: GrantFiled: November 17, 2021Date of Patent: January 23, 2024Assignee: Apple Inc.Inventor: Filip J. Pizlo
-
Patent number: 11860996Abstract: Embodiments described herein provide for virtual machine (VM) based exploit mitigation techniques that can be used to harden web content frameworks and JavaScript Engines. Some embodiments described herein are also generally applicable to other system frameworks, libraries, and program code that executes on a processor that is vulnerable to an attack using a security exploit. Program code that implements the techniques described herein can prevent the use of security exploit attacks to bypass security properties within the program code.Type: GrantFiled: April 5, 2019Date of Patent: January 2, 2024Assignee: Apple Inc.Inventors: Filip J. Pizlo, Yin Zin Mark Lam, Jean-Francois Bastien, Michael L. Saboff
-
Patent number: 11816484Abstract: In an embodiment, dynamically-generated code may be supported in the system by ensuring that the code either remains executing within a predefined region of memory or exits to one of a set of valid exit addresses. Software embodiments are described in which the dynamically-generated code is scanned prior to permitting execution of the dynamically-generated code to ensure that various criteria are met including exclusion of certain disallowed instructions and control of branch target addresses. Hardware embodiments are described in which the dynamically-generated code is permitted to executed but is monitored to ensure that the execution criteria are met.Type: GrantFiled: June 15, 2021Date of Patent: November 14, 2023Assignee: Apple Inc.Inventors: Jeffrey E. Gonion, Michael D. Snyder, Filip J. Pizlo
-
Patent number: 11709675Abstract: In an embodiment, dynamically-generated code may be supported in the system by ensuring that the code either remains executing within a predefined region of memory or exits to one of a set of valid exit addresses. Software embodiments are described in which the dynamically-generated code is scanned prior to permitting execution of the dynamically-generated code to ensure that various criteria are met including exclusion of certain disallowed instructions and control of branch target addresses. Hardware embodiments are described in which the dynamically-generated code is permitted to executed but is monitored to ensure that the execution criteria are met.Type: GrantFiled: June 15, 2021Date of Patent: July 25, 2023Assignee: Apple Inc.Inventors: Filip J. Pizlo, Michael L. Saboff, Bernard J. Semeria, Jacques Fortier, Ivan Krstić, Yusuke Suzuki, Saam J. Barati, Yin Zin Mark Lam
-
Publication number: 20230084495Abstract: Aspects and features include a structure for a program directed to a target computing device and metadata that can be used by a verifier in the target computing device. The verifier can quickly and efficiently apply verification rules to identified sections of the program to determine whether the program is safe to execute by the target computing device. In some examples, the target computing device uses the verifier to identify, using the metadata, verifiable sections of instructions that violate execution safety policies. The verifier can apply verification rules to the verifiable sections to determine whether to execute each verifiable section despite instructions in the verifiable section violating execution safety policies. The program and the metadata can be generated, as an example, by a compiler from source code, and transmitted or otherwise distributed to target computing devices.Type: ApplicationFiled: March 14, 2022Publication date: March 16, 2023Applicant: Apple Inc.Inventor: Filip J. Pizlo
-
Publication number: 20220137968Abstract: In an embodiment, dynamically-generated code may be supported in the system by ensuring that the code either remains executing within a predefined region of memory or exits to one of a set of valid exit addresses. Software embodiments are described in which the dynamically-generated code is scanned prior to permitting execution of the dynamically-generated code to ensure that various criteria are met including exclusion of certain disallowed instructions and control of branch target addresses. Hardware embodiments are described in which the dynamically-generated code is permitted to executed but is monitored to ensure that the execution criteria are met.Type: ApplicationFiled: June 15, 2021Publication date: May 5, 2022Inventors: Jeffrey E. Gonion, Michael D. Snyder, Filip J. Pizlo
-
Publication number: 20220138313Abstract: In an embodiment, dynamically-generated code may be supported in the system by ensuring that the code either remains executing within a predefined region of memory or exits to one of a set of valid exit addresses. Software embodiments are described in which the dynamically-generated code is scanned prior to permitting execution of the dynamically-generated code to ensure that various criteria are met including exclusion of certain disallowed instructions and control of branch target addresses. Hardware embodiments are described in which the dynamically-generated code is permitted to executed but is monitored to ensure that the execution criteria are met.Type: ApplicationFiled: June 15, 2021Publication date: May 5, 2022Inventors: Filip J. Pizlo, Michael L. Saboff, Bernard J. Semeria, Jacques Fortier, Ivan Krstic, Yusuke Suzuki, Saam J. Barati, Yin Zin Mark Lam
-
Publication number: 20220075712Abstract: One embodiment provides for a non-transitory machine-readable medium storing instructions to cause one or more processors to perform operations comprising receiving an instruction to dynamically allocate memory for an object of a data type and dynamically allocating memory for the object from a heap instance that is specific to the data type for the object, the heap instance including a memory allocator for the data type, the memory allocator generated at compile time for the instruction based on a specification of the data type for the heap instance.Type: ApplicationFiled: November 17, 2021Publication date: March 10, 2022Inventor: Filip J. PIZLO
-
Patent number: 11182283Abstract: One embodiment provides for a non-transitory machine-readable medium storing instructions to cause one or more processors to perform operations comprising receiving an instruction to dynamically allocate memory for an object of a data type and dynamically allocating memory for the object from a heap instance that is specific to the data type for the object, the heap instance including a memory allocator for the data type, the memory allocator generated at compile time for the instruction based on a specification of the data type for the heap instance.Type: GrantFiled: April 10, 2019Date of Patent: November 23, 2021Assignee: Apple Inc.Inventor: Filip J. Pizlo
-
Patent number: 11016743Abstract: A method and an apparatus to execute a code compiled from a source code to access an untyped variable are described. An optimized access code may be compiled in the code with speculative optimization via a type prediction of runtime value of the untyped variable. Invalidity of the type prediction may be dynamically detected for future runtime values of the untyped variable. The code may be updated with an access code compiled for the access without the speculative optimization based on the invalidity detection. The updated code can be executed for the access to the untyped variable without executing the optimized access code.Type: GrantFiled: March 17, 2016Date of Patent: May 25, 2021Assignee: Apple Inc.Inventors: Filip J. Pizlo, Gavin Barraclough
-
Patent number: 10713021Abstract: One embodiment provides for a computer-implemented method comprising receiving a request to compile a set of program instructions coded in a high-level language, the set of program instructions including a pointer to a virtual memory address, the pointer having a pointer encoding including a base address and a length; while compiling the set of program instructions, decoding the base address and length from the pointer, wherein the base address specifies a first boundary for a memory allocation, the length defines a second boundary for the memory allocation and the length is an encoding of a size of the memory allocation; and generating a set of compiled instructions which, when executed, enable access to a physical address associated with a virtual address between the first boundary and the second boundary.Type: GrantFiled: September 28, 2018Date of Patent: July 14, 2020Assignee: Apple Inc.Inventors: Filip J. Pizlo, Oliver J. Hunt
-
Publication number: 20200097392Abstract: One embodiment provides for a non-transitory machine-readable medium storing instructions to cause one or more processors to perform operations comprising receiving an instruction to dynamically allocate memory for an object of a data type and dynamically allocating memory for the object from a heap instance that is specific to the data type for the object, the heap instance including a memory allocator for the data type, the memory allocator generated at compile time for the instruction based on a specification of the data type for the heap instance.Type: ApplicationFiled: April 10, 2019Publication date: March 26, 2020Inventor: Filip J. Pizlo
-
Publication number: 20190272159Abstract: One embodiment provides for a computer-implemented method comprising receiving a request to compile a set of program instructions coded in a high-level language, the set of program instructions including a pointer to a virtual memory address, the pointer having a pointer encoding including a base address and a length; while compiling the set of program instructions, decoding the base address and length from the pointer, wherein the base address specifies a first boundary for a memory allocation, the length defines a second boundary for the memory allocation and the length is an encoding of a size of the memory allocation; and generating a set of compiled instructions which, when executed, enable access to a physical address associated with a virtual address between the first boundary and the second boundary.Type: ApplicationFiled: September 28, 2018Publication date: September 5, 2019Inventors: Filip J. Pizlo, Oliver J. Hunt
-
Patent number: 9501409Abstract: A method and an apparatus for an enhanced object model to allow concurrent execution for program code generated from dynamic programming languages, such as JavaScript, are described. An index structure may be introduced to an object model representing a dynamically typed object in addition to a type structure and a data payload storing property or field values of the object. Elements of the index structure may point at corresponding property values as an indirection for accessing the object.Type: GrantFiled: March 31, 2014Date of Patent: November 22, 2016Assignee: Apple Inc.Inventor: Filip J. Pizlo
-
Publication number: 20160321046Abstract: A method and an apparatus to execute a code compiled from a source code to access an untyped variable are described. An optimized access code may be compiled in the code with speculative optimization via a type prediction of runtime value of the untyped variable. Invalidity of the type prediction may be dynamically detected for future runtime values of the untyped variable. The code may be updated with an access code compiled for the access without the speculative optimization based on the invalidity detection. The updated code can be executed for the access to the untyped variable without executing the optimized access code.Type: ApplicationFiled: March 17, 2016Publication date: November 3, 2016Inventors: Filip J. Pizlo, Gavin Barraclough
-
Patent number: 9256410Abstract: A method and an apparatus to continuously re-compile a code are described. The code can be compiled in a speculatively optimized manner from a source code to access an untyped variable according to a type prediction of runtime values for the untyped variable. Failures of the type prediction during the execution can be dynamically tracked. Each failure may be associated a runtime value with a type outside of the type prediction. The type prediction may be adjusted according to the failures tracked for future runtime values of the untyped variable. The source code can be recompiled for execution to optimize the access to the untyped variable for the future runtime values according to the adjusted type prediction.Type: GrantFiled: August 23, 2012Date of Patent: February 9, 2016Assignee: Apple Inc.Inventors: Filip J. Pizlo, Gavin Barraclough
-
Patent number: 9251071Abstract: A method and an apparatus for concurrent accessing of dynamically type objects based on inline cache code are described. Inline cache initialization in a single thread may be off loaded to an interpreter without incurring unnecessary synchronization overhead. A thread bias mechanism may be provided to detect whether a code block is executed in a single thread. Further, the number of inline cache initializations performed via a compiler, such as baseline JIT compiler, can be reduced to improve processing performance.Type: GrantFiled: December 4, 2013Date of Patent: February 2, 2016Assignee: Apple Inc.Inventor: Filip J. Pizlo
-
Patent number: 9245112Abstract: A method, apparatus and machine readable medium are described for managing entitlements on a computing device. For example, one embodiment of a method comprises: loading a first application into a system memory of a computing device; for each library value/symbol pair referenced by the first application, determining whether the first application has a correct entitlement to be linked with the library value/symbol pair; wherein if the application does not have the correct entitlement associated with the library value/symbol pair, then denying linking to the library value/symbol pair and/or linking the application to an alternate library value/symbol pair which does not have the entitlement associated therewith; and if the application has the correct entitlement associated with the library value/symbol pair, then linking the application to the library value/symbol pair with the entitlement in the system memory.Type: GrantFiled: June 1, 2012Date of Patent: January 26, 2016Assignee: Apple Inc.Inventors: Oliver J. Hunt, Ivan Krstic, Gavin Barraclough, Filip J. Pizlo