Combining Offline and Online Optimizations: Register Allocation and Method Inlining
نویسندگان
چکیده
Fast dynamic compilers trade code quality for short compilation time in order to balance application performance and startup time. This paper investigates the interplay of two of the most effective optimizations, register allocation and method inlining for such compilers. We present a bytecode representation which supports offline global register allocation, is suitable for fast code generation and verification, and yet is backward compatible with standard Java bytecode.
منابع مشابه
Design and Analysis of Profile-Based Optimization in Compaq's Compilation Tools for Alpha
This paper describes and evaluates the profile-based optimizations in the Compaq C compiler tool chain for Alpha. The optimizations include superblock formation, inlining, commando loop optimization, register allocation, code layout, and switch statement optimization. The optimizations either are extensions of classical optimizations or are restructuring transformations that enable classical op...
متن کاملSplit Register Allocation: Linear Complexity Without the Performance Penalty
Just-in-time compilers are becoming ubiquitous, spurring the design of more efficient algorithms and more elaborate intermediate representations. They rely on continuous, feedback-directed (re-)compilation frameworks to adaptively select a limited set of hot functions for aggressive optimization. To date, (quasi-)linear complexity has remained a driving force in the design of just-in-time optim...
متن کاملPartial Inlining
Technical Summary 1 Motivation Subprogram inlining is an optimization that has been studied extensively in the By replacing a procedure call with a copy of the body of the called procedure, it ooers a number of beneets: the overhead associated with the procedure call is eliminated; the inlined code can be optimized for the particular call site that was expanded; and the caller's code can potent...
متن کاملThe Swift Java Compiler: Design and Implementation
We have designed and implemented an optimizing Java compiler called Swift for the Alpha architecture. Swift translates Java bytecodes to optimized Alpha code, and uses static single assignment (SSA) form for its intermediate representation (IR). The Swift IR is relatively simple, but allows for straightforward implementation of all the standard scalar optimizations. The Swift compiler also impl...
متن کاملReducing Procedure Call Overhead: Optimizing Register Usage at Procedure Calls
This paper proposes a common global variable reassignment and an integrated approach which takes advantage of the complementary relationship of inlining and interprocedural register allocation to reduce the procedure call overhead without causing additional negative effect. Our approach is based on the observation of analyzed program characteristic t o identify the heavy called procedures regio...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2006