IP Library › Granted Patent US 9,766,867
Granted Patent B2
US 9,766,867 · App. 14/922,977 · Granted Sep 19, 2017

Systems and methods for improving performance of mobile applications

Inventors: JunFeng Yang (New York, NY); Younghoon Jeon (Fort Lee, NJ)
Assignee: THE TRUSTEES OF COLUMBIA UNIVERSITY IN THE CITY OF NEW YORK
G06F8/447G06F8/443G06F8/52G06F8/64G06F9/4552
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,766,867
App. No.
14/922,977
Filed
Oct 26, 2015
Granted
Sep 19, 2017
Kind
B2
Art Unit
2199
USPC
717/148
Abstract

Systems and methods for improving the performance of mobile applications are disclosed. An exemplary method can include receiving a request for the application, where the request can include target device information. The method can also determine whether the application has been cached before. If the application has not been cached, the method can download the application as a bytecode and process the bytecode into the native code format, using an Ahead-of-time compiler. The method can also provide the application in the native code format to the target device over the network.

Claims (67)

1. A method for providing an application from an application source to a target device over a network in a native code format used by the target device comprising:

receiving a request for the application including a target device information;

determining whether the application has been cached,

if the application has not been cached:

downloading the application from the application source as a bytecode;

processing, using an Ahead-Of-Time compiler, the bytecode into the native code format, wherein the processing includes,

reviewing each of at least one method of the bytecode, wherein the bytecode includes the at least one instruction;

determining whether the at least one instruction is a leaf method invocation lightweight;

if the at least one instruction is the leaf method invocation lightweight,

 determining a callsite of the at least one instruction;

 removing stack frame allocation and deallocation of the at least one instruction; and

performing register promotion; and

providing the application in the native code format to the target device over the network.

2. The method of claim 1 , wherein the target device information includes one or more of a device type, an operating system version, and a platform version.

3. The method of claim 1 , wherein the processing further comprises caching the application in the native code format if the application has not been cached.

4. The method of claim 1 , wherein the processing further comprises:

processing the bytecode into an intermediate representation.

5. The method of claim 4 , wherein the application in the native code format is invoked by a Virtual Machine.

6. The method of claim 1 , wherein the processing further comprises processing a portion of the bytecode into the native code format.

7. The method of claim 1 , wherein the bytecode includes at least one of a generic bytecode and a pre-processed bytecode.

8. The method of claim 1 , wherein the processing further comprises:

selecting at least one portion of the application; and

processing the bytecode of the at least one portion of the application into the native code format.

9. The method of claim 1 , wherein the processing further comprises:

analyzing an instruction of a method of the bytecode, wherein the bytecode includes at least one method and the at least one method includes at least one instruction;

determining if the instruction includes a local variable;

determining a type of the local variable; and

promoting the local variable if the type of a primitive type.

10. The method of claim 1 , wherein the processing further comprises statically resolving methods.

11. An apparatus for providing an application from an application source to a target device over a network in a native code format used by the target device, comprising:

a processor; and

a memory to store computer program instruction, the computer program instructions when executed on the processor, cause the processor to perform operations comprising:

receiving a request for the application including a target device information;

determining whether the application has been cached,

if the application has not been cached:

downloading the application from the application source as a bytecode; and

processing, using an Ahead-Of-Time compiler, the bytecode into the native code format, wherein the processing includes,

reviewing each of at least one method of the bytecode, wherein the bytecode includes the at least one instruction;

determining whether the at least one instruction is a leaf method invocation lightweight;

if the at least one instruction is the leaf method invocation lightweight,

 determining a callsite of the at least one instruction;

 removing stack frame allocation and deallocation of the at least one instruction; and

performing register promotion; and

providing the application in the native code format to the target device over the network.

12. The apparatus of claim 11 , wherein the processing is performed by an application developer server.

13. The apparatus of claim 11 , wherein the processing is performed by an application broker server.

14. The apparatus of claim 11 , wherein the processing is performed by the target device.

15. The apparatus of claim 11 , further comprising processing the bytecode into the native code format using an interpreter.

16. The apparatus of claim 15 , wherein the interpreter is embedded into the application.

17. The apparatus of claim 15 , wherein the interpreter can be at least one of a system interpreter or an embedded interpreter.

18. The apparatus of claim 11 , wherein the target device can execute at least one of the bytecode and a native code.

19. A system for providing an application from an application source to a target device over a network in a native code format used by the target device, comprising:

the target device that provides a request for the application;

an application source that provides the application in a bytecode; and

at least one processor that:

receives a request for the application including a target device information;

determines whether the application has been cached,

if the application has not been cached:

downloading the application from the application source as the bytecode; and

processing, using an Ahead-Of-Time compiler, the bytecode into the native code format, wherein the processing includes,

reviewing each of at least one method of the bytecode, wherein the bytecode includes the at least one instruction;

determining whether the at least one instruction is a leaf method invocation lightweight;

if the at least one instruction is the leaf method invocation lightweight,

 determining a callsite of the at least one instruction;

 removing stack frame allocation and deallocation of the at least one instruction; and

performing register promotion; and

provides the application in the native code format to the target device over the network.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2017
From: YANG, JUNFENG; JEON, YOUNGHOON
To: THE TRUSTEES OF COLUMBIA UNIVERSITY IN THE CITY OF NEW YORK
Reel/Frame 042988/0870 →
Continuity (4)
Continuation PCTUS2014035655 · Apr 28, 2014
Provisional Application 61816461 · Apr 26, 2013
Provisional Application 61871075 · Aug 28, 2013
Related Publication 20160041816A1 · Feb 11, 2016