Using inter-procedural side-effect information in JIT optimizations

Side-effect analysis gives information about the set of locations that a statement may read or modify. This analysis can provide information useful in a compiler for performing aggressive optimizations. The impact of the use of side-effect analysis in compiler optimizations has been studied for p...

Full description

Bibliographic Details
Main Author: Le, Anatole
Format: Others
Language:en
Published: McGill University 2005
Subjects:
Online Access:http://digitool.Library.McGill.CA:80/R/?func=dbin-jump-full&object_id=82273
id ndltd-LACETR-oai-collectionscanada.gc.ca-QMM.82273
record_format oai_dc
spelling ndltd-LACETR-oai-collectionscanada.gc.ca-QMM.822732014-02-13T04:08:49ZUsing inter-procedural side-effect information in JIT optimizationsLe, AnatoleComputer Science.Side-effect analysis gives information about the set of locations that a statement may read or modify. This analysis can provide information useful in a compiler for performing aggressive optimizations. The impact of the use of side-effect analysis in compiler optimizations has been studied for programming languages such as Modula-3 and C, but no thorough investigation for Java has been done. We present a study of whether side-effect information improves performance in Java just-in-time (JIT) compilers, and if so, what level of analysis precision is needed. We also analyze the optimizations and benchmarks that benefit most from side-effect analysis.We used SPARK, the inter-procedural analysis component of the SOOT Java analysis and optimization framework, to compute side-effect information and encode it in class files. We modified Jikes RVM, a research JIT, to make use of side-effect analysis in various local and global analyses and optimizations such as local common sub-expression elimination, heap SSA, redundant load elimination and loop-invariant code motion. On the SpecJVM98 benchmarks, we measured the static number of memory operations removed, the dynamic counts of memory reads eliminated, and the execution time.Our results show that the use of side-effect analysis increases the number of static opportunities for load elimination by up to 98%, and reduces dynamic field read instructions by up to 27%. Side-effect information enabled speedups of up to 20% for some benchmarks. The main cause of the speedups is the use of side-effect information in load elimination. Finally, among the different levels of precision of side-effect information, a simple side-effect analysis is usually sufficient to obtain most of these speedups.McGill University2005Electronic Thesis or Dissertationapplication/pdfenalephsysno: 002227298proquestno: AAIMR12484Theses scanned by UMI/ProQuest.All items in eScholarship@McGill are protected by copyright with all rights reserved unless otherwise indicated.Master of Science (School of Computer Science.) http://digitool.Library.McGill.CA:80/R/?func=dbin-jump-full&object_id=82273
collection NDLTD
language en
format Others
sources NDLTD
topic Computer Science.
spellingShingle Computer Science.
Le, Anatole
Using inter-procedural side-effect information in JIT optimizations
description Side-effect analysis gives information about the set of locations that a statement may read or modify. This analysis can provide information useful in a compiler for performing aggressive optimizations. The impact of the use of side-effect analysis in compiler optimizations has been studied for programming languages such as Modula-3 and C, but no thorough investigation for Java has been done. We present a study of whether side-effect information improves performance in Java just-in-time (JIT) compilers, and if so, what level of analysis precision is needed. We also analyze the optimizations and benchmarks that benefit most from side-effect analysis. === We used SPARK, the inter-procedural analysis component of the SOOT Java analysis and optimization framework, to compute side-effect information and encode it in class files. We modified Jikes RVM, a research JIT, to make use of side-effect analysis in various local and global analyses and optimizations such as local common sub-expression elimination, heap SSA, redundant load elimination and loop-invariant code motion. On the SpecJVM98 benchmarks, we measured the static number of memory operations removed, the dynamic counts of memory reads eliminated, and the execution time. === Our results show that the use of side-effect analysis increases the number of static opportunities for load elimination by up to 98%, and reduces dynamic field read instructions by up to 27%. Side-effect information enabled speedups of up to 20% for some benchmarks. The main cause of the speedups is the use of side-effect information in load elimination. Finally, among the different levels of precision of side-effect information, a simple side-effect analysis is usually sufficient to obtain most of these speedups.
author Le, Anatole
author_facet Le, Anatole
author_sort Le, Anatole
title Using inter-procedural side-effect information in JIT optimizations
title_short Using inter-procedural side-effect information in JIT optimizations
title_full Using inter-procedural side-effect information in JIT optimizations
title_fullStr Using inter-procedural side-effect information in JIT optimizations
title_full_unstemmed Using inter-procedural side-effect information in JIT optimizations
title_sort using inter-procedural side-effect information in jit optimizations
publisher McGill University
publishDate 2005
url http://digitool.Library.McGill.CA:80/R/?func=dbin-jump-full&object_id=82273
work_keys_str_mv AT leanatole usinginterproceduralsideeffectinformationinjitoptimizations
_version_ 1716646251600019456