US 12,271,718 B2
Systems and methods for performing binary translation
Cameron Zwarich, Cupertino, CA (US); and Denis Palmans, Saratoga, CA (US)
Assigned to Apple Inc., Cupertino, CA (US)
Filed by Apple Inc., Cupertino, CA (US)
Filed on Jun. 9, 2021, as Appl. No. 17/343,484.
Claims priority of provisional application 63/042,228, filed on Jun. 22, 2020.
Prior Publication US 2021/0397425 A1, Dec. 23, 2021
Int. Cl. G06F 8/52 (2018.01); G06F 9/455 (2018.01); G06F 12/1009 (2016.01); H04L 9/06 (2006.01)
CPC G06F 8/52 (2013.01) [G06F 9/45516 (2013.01); G06F 12/1009 (2013.01); H04L 9/0643 (2013.01)] 22 Claims
OG exemplary drawing
 
1. A system, comprising:
one or more processors configured to execute application binaries in a second execution environment different than a first execution environment; and
a memory storing:
an operating system and one or more application binaries, the one or more application binaries written for execution in the first execution environment;
a binary translator comprising a cache management system service executable in a first address space and a runtime code module executable in a second address space of the application binaries, wherein the first address space is separate from the second address space, wherein the cache management system service is configured to manage translations of the application binaries in a translation cache including handling calls to the translation cache, and wherein the runtime code module is configured to manage just-in-time (JIT) translations of the application binaries for which the cache management system service lacks corresponding translations; and
the translation cache storing one or more translations, wherein a given translation corresponds to at least a portion of the one or more application binaries, and wherein the one or more translations are for execution in the second execution environment, wherein:
the translation of the one or more application binaries includes an object-level translation of the one or more application binaries generated prior to the execution of the one or more applications represented by the one or more application binaries; and
the one or more processors are configured to execute the cached translation of the one or more application binaries within the runtime code module when the operating system calls for the execution of the one or more application binaries.