Dynamic Binary Optimization and dynamic compilation based schemes are widely employed for runtime program optimization. They are effective in specific program scenarios, but their scope of applicability is limited by the associated runtime overhead. Their capabilities can be exploited well with the knowledge of program parameters and execution conditions. These high level structures affect the runtime optimization decisions, thereby reducing the overhead in rediscovering them. In the current program flow process, the binary executable files are devoid of this program high-level structure. Such structures exist at earlier stages, i.e., at higher level program in the compiler front end generated parse and attributed abstract syntax trees, and data structures generated in the compiler back end for optimization, i.e. a call graph. However, the information is discarded at the final code generation stage. In this paper, we develop a framework that automatically captures attributes of program structure, which are carried forward through static compilation. They are used to make the runtime optimization process faster and lightweight in nature. We also develop a novel Runtime Management Module (RMM) to control the program execution process and reoptimize the code to better suit the current execution conditions, as needed. Our metadata extraction techniques coupled with the effectiveness of RMM results into significant performance gains during execution of diverse benchmarks from SPEC and Splash 2 benchmark suites.
展开▼