Patent ID: 9038038
Filing Date: 2015-05-19
Classification: G06F

Abstract:
1. A method comprising: receiving an application on a mobile device, the mobile device including a processor for executing native code and an interpreter for interpreting intermediate code, wherein the application includes at least one machine instruction; receiving data characterizing prior actions of the application on the mobile device, the data indicating at least an average time spent by the interpreter interpreting portions of the intermediate code of the application; determining a portion of intermediate code to be compiled into native code based at least in part on the data indicating the average time spent by the interpreter interpreting the portion exceeding a time threshold, wherein the portion includes some but not all of the application; after determining the portion of intermediate code to be compiled based on the average time spent, invoking the interpreter at the mobile device to begin executing the portion of the intermediate code; after the interpreter is invoked, sending the portion of intermediate code over a network to a compilation server to compile the portion of intermediate code into native code while the portion of intermediate code concurrently executes by the interpreter; receiving the native code corresponding to the portion of intermediate code from the compilation server; when the native code corresponding to the intermediate code is not received from the compilation server within a threshold time period, continuing to execute the portion of the intermediate code by the interpreter at the mobile device; and when the native code corresponding to the intermediate code is received from the compilation server within the threshold time period, executing the native code on the processor-at the mobile device in place of the executing portion of the intermediate code by the interpreter.