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).

  • Patent number: 9128732
    Abstract: A method and an apparatus for runtime compilation that generates non-deterministic and unpredictable code to protect against un-trusted code attacks are described. The runtime compilation may be based on heuristic rules without requiring deterministic behavior reduction operations for all the code generated. The heuristic rules may include estimations on, for example, runtime overhead or cost incurred for code protection, amount of code protection required and/or other applicable factors and their relationships.
    Type: Grant
    Filed: September 14, 2012
    Date of Patent: September 8, 2015
    Assignee: Apple Inc.
    Inventors: Oliver J. Hunt, Gavin Barraclough, Filip J. Pizlo, Geoffrey Garen
  • Patent number: 9027006
    Abstract: A method and an apparatus to execute a code with value profiling are described. The code may include an access to an untyped variable. During the execution, runtime values of the untyped variable may be randomly inspected. A value profile may be established to predict one or more expected types of future runtime values for the untyped variable. The code may be recompiled according to the value profile to optimize the access of the untyped variable for the future runtime values.
    Type: Grant
    Filed: August 23, 2012
    Date of Patent: May 5, 2015
    Assignee: Apple Inc.
    Inventors: Filip J. Pizlo, Gavin Barraclough
  • Patent number: 9027010
    Abstract: A method and an apparatus that optimize operations for a key among a collection of key indexed data structures using meta data describing properties of the key with respect to the collection of data structures are described. The meta data may correspond to a cache dynamically updated to indicate invariants which are true for the key in a current state of the collection of data structures. Expensive calculations to search through the collection of data structures for the key may be avoided. For example, costly lookup operations over a collection of data structures may not be required at all if a key is known to always (or to never) reference certain specific values, or for these values to have certain meta-properties, in any of the collection of data structure globally throughout a system at a current state.
    Type: Grant
    Filed: December 21, 2012
    Date of Patent: May 5, 2015
    Assignee: Apple Inc.
    Inventors: Gavin Barraclough, Filip J. Pizlo
  • Patent number: 9003384
    Abstract: A method and an apparatus that modify pointer values pointing to typed data with type information are described. The type information can be automatically checked against the typed data leveraging hardware based safety check mechanisms when performing memory access operations to the typed data via the modified pointer values. As a result, hardware built in logic can be used for a broad class of programming language safety check when executing software codes using modified pointers that are subject to the safety check without executing compare and branch instructions in the software codes.
    Type: Grant
    Filed: December 18, 2012
    Date of Patent: April 7, 2015
    Assignee: Apple Inc.
    Inventor: Filip J. Pizlo
  • Publication number: 20150067639
    Abstract: 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: Application
    Filed: March 31, 2014
    Publication date: March 5, 2015
    Applicant: Apple Inc.
    Inventor: Filip J. Pizlo
  • Publication number: 20150067267
    Abstract: 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: Application
    Filed: December 4, 2013
    Publication date: March 5, 2015
    Applicant: Apple Inc.
    Inventor: Filip J. Pizlo
  • Patent number: 8972952
    Abstract: A method and an apparatus that generate tracer data randomly and infrequently for origins and destinations of values created during runtime of a compiled code of a source code is described. A tracer graph may be updated to record the origins and destinations of the values during the runtime. The compiled code may be optimized to reduce processing resources between the origins and the destinations of the values according to the tracer graph. The optimized compiled code may be executed for at least a portion of the source code.
    Type: Grant
    Filed: September 14, 2012
    Date of Patent: March 3, 2015
    Assignee: Apple Inc.
    Inventors: Filip J. Pizlo, Gavin Barraclough
  • Patent number: 8819382
    Abstract: A method and an apparatus to scan a stack for references to a heap used in executing a code via the heap are described. The heap may be allocated with fixed and varied sized slots. Each varied sized slot may be referenced by at most one fixed sized slot. Which slots are live may be identified based on the references in the stack. A fixed slot can be live if referenced by the stack. A fixed or varied slot referenced by a live slot can also be live. Varied sized slots referenced by the stack may be identified as pinned. The heap may be de-fragmented to reclaim fixed sized slots which are not live without moving live fixed sized slots and to reclaim varied sized slots which are neither live nor pinned by moving live varied slots.
    Type: Grant
    Filed: August 23, 2012
    Date of Patent: August 26, 2014
    Assignee: Apple Inc.
    Inventors: Filip J. Pizlo, Geoffrey Garen, Mark Hahnenberg
  • Publication number: 20140047420
    Abstract: A method and an apparatus to execute a code with value profiling are described. The code may include an access to an untyped variable. During the execution, runtime values of the untyped variable may be randomly inspected. A value profile may be established to predict one or more expected types of future runtime values for the untyped variable. The code may be recompiled according to the value profile to optimize the access of the untyped variable for the future runtime values.
    Type: Application
    Filed: August 23, 2012
    Publication date: February 13, 2014
    Inventors: Filip J. Pizlo, Gavin Barraclough
  • Publication number: 20140047416
    Abstract: 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: Application
    Filed: August 23, 2012
    Publication date: February 13, 2014
    Inventors: Filip J. Pizlo, Gavin Barraclough
  • Publication number: 20140047423
    Abstract: 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: Application
    Filed: August 23, 2012
    Publication date: February 13, 2014
    Inventors: Filip J. Pizlo, Gavin Barraclough
  • Publication number: 20140047209
    Abstract: A method and an apparatus to scan a stack for references to a heap used in executing a code via the heap are described. The heap may be allocated with fixed and varied sized slots. Each varied sized slot may be referenced by at most one fixed sized slot. Which slots are live may be identified based on the references in the stack. A fixed slot can be live if referenced by the stack. A fixed or varied slot referenced by a live slot can also be live. Varied sized slots referenced by the stack may be identified as pinned. The heap may be de-fragmented to reclaim fixed sized slots which are not live without moving live fixed sized slots and to reclaim varied sized slots which are neither live nor pinned by moving live varied slots.
    Type: Application
    Filed: August 23, 2012
    Publication date: February 13, 2014
    Inventors: Filip J. Pizlo, Geoffrey Garen, Mark Hahnenberg
  • Publication number: 20130326492
    Abstract: 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: Application
    Filed: June 1, 2012
    Publication date: December 5, 2013
    Inventors: Oliver J. Hunt, Ivan Krstic, Gavin Barraclough, Filip J. Pizlo
  • Publication number: 20130205388
    Abstract: A method and an apparatus for runtime compilation that generates non-deterministic and unpredictable code to protect against un-trusted code attacks are described. The runtime compilation may be based on heuristic rules without requiring deterministic behavior reduction operations for all the code generated. The heuristic rules may include estimations on, for example, runtime overhead or cost incurred for code protection, amount of code protection required and/or other applicable factors and their relationships.
    Type: Application
    Filed: September 14, 2012
    Publication date: August 8, 2013
    Applicant: Apple Inc.
    Inventors: Oliver J. Hunt, Gavin Barraclough, Filip J. Pizlo, Geoffrey Garen
  • Publication number: 20130205281
    Abstract: A method and an apparatus that generate tracer data randomly and infrequently for origins and destinations of values created during runtime of a compiled code of a source code is described. A tracer graph may be updated to record the origins and destinations of the values during the runtime. The compiled code may be optimized to reduce processing resources between the origins and the destinations of the values according to the tracer graph. The optimized compiled code may be executed for at least a portion of the source code.
    Type: Application
    Filed: September 14, 2012
    Publication date: August 8, 2013
    Applicant: APPLE INC.
    Inventors: Filip J. Pizlo, Gavin Barraclough