PLATFORM SPECIFIC OPTIMIZATIONS IN STATIC COMPILERS
First Claim
1. A system for static compilation of application code, the system comprising:
- a data store that operates to store application code comprising a plurality of code regions and to store a plurality of machine models that each models capabilities of a corresponding target platform;
a computer-implemented code profiler that operates to identify hot code regions from the plurality of code regions of the application code, such that each hot code region is a primary contributor to runtime execution of the application code; and
a computer-implemented code versioner that operates, for each hot code region, to;
compile a first version of the hot code region according to a first of the machine models, the first version having a first estimated execution time;
compile a second version of the hot code region according to a second of the machine models, the second version having a second estimated execution time; and
compile the application code to include both the first and the second versions of the hot code region when a difference between the first and second estimated execution times is greater than a predetermined threshold, the application code being compiled in such a way that permits selection by a target machine at load time between the first and second versions of the hot code region.
1 Assignment
0 Petitions
Accused Products
Abstract
Embodiments include systems and methods for generating an application code binary that exploits new platform-specific capabilities, while maintaining backward compatibility with other older platforms. For example, application code is profiled to determine which code regions are main contributors to the runtime execution of the application. For each hot code region, a determination is made as to whether multiple versions of the hot code region should be produced for different target platform models. Each hot code region can be analyzed to determine if benefits can be achieved by exploiting platform-specific capabilities corresponding to each of N platform models, which can result in between one and N versions of that particular hot code region. Navigation instructions are generated as part of the application code binary to permit a target machine to select appropriate versions of the hot code sections at load time, according to the target machine'"'"'s capabilities.
33 Citations
20 Claims
-
1. A system for static compilation of application code, the system comprising:
-
a data store that operates to store application code comprising a plurality of code regions and to store a plurality of machine models that each models capabilities of a corresponding target platform; a computer-implemented code profiler that operates to identify hot code regions from the plurality of code regions of the application code, such that each hot code region is a primary contributor to runtime execution of the application code; and a computer-implemented code versioner that operates, for each hot code region, to; compile a first version of the hot code region according to a first of the machine models, the first version having a first estimated execution time; compile a second version of the hot code region according to a second of the machine models, the second version having a second estimated execution time; and compile the application code to include both the first and the second versions of the hot code region when a difference between the first and second estimated execution times is greater than a predetermined threshold, the application code being compiled in such a way that permits selection by a target machine at load time between the first and second versions of the hot code region. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer-implemented method for static compilation of application code, the method comprising:
-
profiling application code to identify hot code regions from a plurality of code regions of the application code, such that each hot code region is a primary contributor to runtime execution of the application code; and for each identified hot code region; compiling a first version of the hot code region according to a first of a plurality of machine models that each models capabilities of a corresponding target platform, the first version having a first estimated execution time; compiling a second version of the hot code region according to a second of the machine models, the second version having a second estimated execution time; and compiling the application code to include both the first and the second versions of the hot code region when a difference between the first and second estimated execution times is greater than a predetermined threshold, the application code being compiled in such a way that permits selection by a target machine at load time between the first and second versions of the hot code region. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20)
-
Specification