The patent badge is an abbreviated version of the USPTO patent document. The patent badge does contain a link to the full patent document.
The patent badge is an abbreviated version of the USPTO patent document. The patent badge covers the following: Patent number, Date patent was issued, Date patent was filed, Title of the patent, Applicant, Inventor, Assignee, Attorney firm, Primary examiner, Assistant examiner, CPCs, and Abstract. The patent badge does contain a link to the full patent document (in Adobe Acrobat format, aka pdf). To download or print any patent click here.
Patent No.:
Date of Patent:
Nov. 24, 2015
Filed:
Jul. 30, 2010
Victor Leonel Hernandez Porras, San Francisco, CA (US);
Christopher Arthur Lattner, San Jose, CA (US);
Jia-hong Chen, Cupertino, CA (US);
Eric Marshall Christopher, Los Gatos, CA (US);
Roger Scott Hoover, Cheyenne, WY (US);
Francois Jouaux, Woodside, CA (US);
Robert John Mccall, San Francisco, CA (US);
Thomas John O'brien, San Jose, CA (US);
Pratik Solanki, Mountain View, CA (US);
Victor Leonel Hernandez Porras, San Francisco, CA (US);
Christopher Arthur Lattner, San Jose, CA (US);
Jia-Hong Chen, Cupertino, CA (US);
Eric Marshall Christopher, Los Gatos, CA (US);
Roger Scott Hoover, Cheyenne, WY (US);
Francois Jouaux, Woodside, CA (US);
Robert John McCall, San Francisco, CA (US);
Thomas John O'Brien, San Jose, CA (US);
Pratik Solanki, Mountain View, CA (US);
Apple Inc., Cupertino, CA (US);
Abstract
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. In the event that it is determined at runtime that the dynamic attribute does not have the expected value, execution reverts to backup code that is not based on the assumption that dynamic attribute will have the expected value.