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.

Date of Patent:
Nov. 24, 2015

Filed:

Jul. 30, 2010
Applicants:

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

Inventors:

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

Assignee:

Apple Inc., Cupertino, CA (US);

Attorney:
Primary Examiner:
Assistant Examiner:
Int. Cl.
CPC ...
G06F 9/45 (2006.01); G06F 9/455 (2006.01); G06F 11/30 (2006.01);
U.S. Cl.
CPC ...
G06F 9/45525 (2013.01); G06F 8/4441 (2013.01); G06F 11/30 (2013.01);
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.


Find Patent Forward Citations

Loading…