Detecting equality of variables in programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Interprocedural modification side effect analysis with pointer aliasing
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Global code motion/global value numbering
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Putting pointer analysis to work
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Comparing flow and context sensitivity on the modification-side-effects problem
Proceedings of the 1998 ACM SIGSOFT international symposium on Software testing and analysis
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Which pointer analysis should I use?
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
On the importance of points-to analysis and other memory disambiguation methods for C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
A schema for interprocedural modification side-effect analysis with pointer aliasing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Points-to analysis for Java using annotated constraints
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Java Virtual Machine Specification
Java Virtual Machine Specification
Parameterized object sensitivity for points-to and side-effect analyses for Java
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Immutability specification and its applications
JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Unified Analysis of Array and Object References in Strongly Typed Languages
SAS '00 Proceedings of the 7th International Symposium on Static Analysis
Optimizing Java Bytecode Using the Soot Framework: Is It Feasible?
CC '00 Proceedings of the 9th International Conference on Compiler Construction
A Framework for Optimizing Java Using Attributes
CC '01 Proceedings of the 10th International Conference on Compiler Construction
Points-to and Side-Effect Analyses for Programs Built with Precompiled Libraries
CC '01 Proceedings of the 10th International Conference on Compiler Construction
IBM Systems Journal
Towards dynamic interprocedural analysis in JVMs
VM'04 Proceedings of the 3rd conference on Virtual Machine Research And Technology Symposium - Volume 3
Scaling Java points-to analysis using SPARK
CC'03 Proceedings of the 12th international conference on Compiler construction
A study of type analysis for speculative method inlining in a JIT environment
CC'05 Proceedings of the 14th international conference on Compiler Construction
A two-phase escape analysis for parallel java programs
Proceedings of the 15th international conference on Parallel architectures and compilation techniques
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automated Generation of Context-Aware Tests
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Dynamic purity analysis for java programs
PASTE '07 Proceedings of the 7th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Data Flow Analysis as a General Concept for the Transport of Verifiable Program Annotations
Electronic Notes in Theoretical Computer Science (ENTCS)
Ilea: inter-language analysis across java and c
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Parameter reference immutability: formal definition, inference tool, and comparison
Automated Software Engineering
Reducing combinatorics in testing product lines
Proceedings of the tenth international conference on Aspect-oriented software development
JPure:: a modular purity system for java
CC'11/ETAPS'11 Proceedings of the 20th international conference on Compiler construction: part of the joint European conferences on theory and practice of software
Loop transformations in the ahead-of-time optimization of java bytecode
CC'06 Proceedings of the 15th international conference on Compiler Construction
Object representatives: a uniform abstraction for pointer information
VoCS'08 Proceedings of the 2008 international conference on Visions of Computer Science: BCS International Academic Conference
Side-effect analysis with fast escape filter
Proceedings of the ACM SIGPLAN International Workshop on State of the Art in Java Program analysis
Reim & ReImInfer: checking and inference of reference immutability and method purity
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
ReImInfer: method purity inference for Java
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Interprocedural strength reduction of critical sections in explicitly-parallel programs
PACT '13 Proceedings of the 22nd international conference on Parallel architectures and compilation techniques
Hi-index | 0.00 |
Inter-procedural analyses such as side-effect analysis can provide information useful for performing aggressive optimizations. We present a study of whether side-effect information improves performance in just-in-time (JIT) compilers, and if so, what level of analysis precision is needed. 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 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 in the range of 1.08x to 1.20x for some benchmarks. 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.