Browse > Article

Lightweight Loop Invariant Code Motion for Java Just-In-Time Compiler on Itanium  

Yu Jun-Min (삼성전자 반도체 사업부)
Choi Hyung-Kyu (서울대학교 컴퓨터공학부)
Moon Soo-Mook (서울대학교 컴퓨터공학부)
Abstract
Loop invariant code motion (LICM) optimization includes relatively heavy code analyses, thus being not readily applicable to Java Just-In-Time (JIT) compilation where the JIT compilation time is part of the whole running time. 'Classical' LICM optimization first analyzes the code and constructs both the def-use chains and the use-def chains. which are then used for performing code motions. This paper proposes a light-weight LICM algorithm, which requires only the def-use chains of loop invariant code (without use-def chains) by exploiting the fact that the Java virtual machine is based on a stack machine, hence generating code with simpler patterns. We also propose two techniques that allow more code motions than classical LICM techniques. First, unlike previous JIT techniques that uses LICM only in single-path loops for simplicity, we apply LICM to multi-path loops (natural loops) safely for partially redundant code. Secondly, we move loop-invariant, partially-redundant null pointer check code via predication support in Itanium. The proposed techniques were implemented in a JIT compiler for Itanium processor on ORP (Open Runtime Platform) Java virtual machine of Intel. On SPECjvrn98 benchmarks, the proposed technique increases the JIT compilation overhead by the geometric mean of 1.3%, yet it improves the total running time by the geometric mean of 2.2%.
Keywords
loop invariant code motion; Java JIT compiler; null pointer check code; IPF;
Citations & Related Records
연도 인용수 순위
  • Reference
1 S. Kim, S.-M. Moon, and K. Ebcioglu. vLaTTe: A Java Just-In -Time Compiler for VLIW with Fast Scheduling and Register Allocation, July 2000. submitted for publication
2 Steven S. Muchnick, 'Advanced Compiler Design Implementation,' pp.252-258, pp.397-406, pp.407-415, Morgan Kaufman, 1997
3 Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck, 'Efficiently Computing Static Single Assignment Form and the Control Dependence Graph,' in ACM Transactions on Programming Languages and Systems. ACM, October 1991   DOI
4 Robert Kennedy, Sun Chan, Shin-Ming Liu, Raymond Lo, Peng Tu, and Fred Chow. 'Partial redundancy elimination in SSA form,' ACM Transactions on Programming Languages and Systems, 21(3):627--676, 1999   DOI
5 Nystrom, N., Hosking, A. L., Cutts, Q., and Diwan, A., 'Partial redundancy elimination for access path expressions,' Unpublished manuscript. Palsberg, J. and Schwartzbach, M. I. 1994. Object-Oriented Type Systems. Wiley
6 Qiong Cai and Jingling Xue, 'Optimal and Efficient Speculation-Based Partial Redundancy Elimination,' In Proceedings of the IEEE/ACM International Symposium on Code Generation and Optimization (CGO'03), 2003   DOI
7 The Standard Performance Evaluation Corporation. SPEC JVM98 Benchmarks. http://www.spec.org/osg/jvm98/, 1998
8 B.-S. Yang, S.-M. Moon, S. Park, J. Lee, S. Lee, J. Park, Y. C. Chung, S. Kim, K. Ebcioglu, and E. Altman, 'LaTTe: A Java VM just-in-time compiler with fast and ecient register allocation,' In Proceedings of the 1999 International Conference on Parallel Architectures and Compilation Techniques (PACT '99), pages 128-138, Newport Beach, California, Oct. 1999. IEEE Computer Society Press. http://latte.snu.ac.kr   DOI
9 Ali-Reza Adl-Tabatabai, Michal Cierniak, Guei-Yuan Lueh, Vishesh M. Parakh, and James M. Stichnoth. 'Fast, Effective Code Generation in a Just-In-Time Java Compiler,' In Proceedings of the ACM SIGPLAN '98 Conference on Programming Language Design and Implementation (PLDI), pp, 280-290, Montreal, Canada, June 1998   DOI
10 M. Cierniak, G.-Y. Lueh, and J. M. Stichnoth, 'Practicing JUDO: Java under dynamic optimizations,' In Proceedings of the ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation (PLDI-00), volume 35.5 of ACM Sigplan Notices, pages 13{26, N.Y., June 18{21 2000. ACM Press   DOI
11 Open Runtime Platform (ORP), Intel Microprocessor Research Laboratory, http://intel.com/research/mrl/orp
12 V. IA-Application, 'Intel IA-64 architecture software developer's manual volume 1 : IA-64 application architecture.'
13 F.Yellin and T. Lindholm, 'The Java Virtual Machine Specification,' Addisin-Wesley, 1996
14 S.-M. Moon and K. Ebcioglu 'A Just-in-Time Compiler,' IEEE Computer, March 2000