Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Compiler optimizations for eliminating barrier synchronization
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
Fast static analysis of C++ virtual function calls
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Points-to analysis in almost linear time
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Fast and accurate flow-insensitive points-to analysis
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Synchronization transformations for parallel computing
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Using static single assignment form to improve flow-insensitive pointer analysis
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Thin locks: featherweight synchronization for Java
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Escape analysis for object-oriented languages: application to Java
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Removing unnecessary synchronization in Java
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Compositional pointer and escape analysis for Java programs
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Marmot: an optimizing compiler for Java
Software—Practice & Experience
Modular interprocedural pointer analysis using access paths: design, implementation, and evaluation
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Scalable context-sensitive flow analysis using instantiation constraints
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
The Java Language Specification
The Java Language Specification
Points-to Analysis by Type Inference of Programs with Structures and Unions
CC '96 Proceedings of the 6th International Conference on Compiler Construction
Lock Coarsening: Eliminating Lock Overhead in Automatically Parallelized Object-Based Programs
LCPC '96 Proceedings of the 9th International Workshop on Languages and Compilers for Parallel Computing
Incrementalized pointer and escape analysis
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Pointer and escape analysis for multithreaded programs
PPoPP '01 Proceedings of the eighth ACM SIGPLAN symposium on Principles and practices of parallel programming
Pointer analysis: haven't we solved this problem yet?
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
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
A parameterized type system for race-free Java programs
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Understanding the connectivity of heap objects
Proceedings of the 3rd international symposium on Memory management
Heap architectures for concurrent languages using message passing
Proceedings of the 3rd international symposium on Memory management
Efficient and precise datarace detection for multithreaded object-oriented programs
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
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
Lock reservation: Java locks can mostly do without atomic operations
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Write barrier removal by static analysis
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Programming dynamically reconfigurable open systems with SALSA
ACM SIGPLAN Notices
Pointer analysis for structured parallel programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Space- and Time-Efficient Implementation of the Java Object Model
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Analysis of Multithreaded Programs
SAS '01 Proceedings of the 8th International Symposium on Static Analysis
Estimating the Impact of Scalable Pointer Analysis on Optimization
SAS '01 Proceedings of the 8th International Symposium on Static Analysis
Improving the Precision of Equality-Based Dataflow Analyses
SAS '02 Proceedings of the 9th International Symposium on Static Analysis
Comprehensive synchronization elimination for Java
Science of Computer Programming - Special issue on static analysis (SAS'99)
Fragment class analysis for testing of polymorphism in Java software
Proceedings of the 25th International Conference on Software Engineering
Data size optimizations for java programs
Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems
Static conflict analysis for multi-threaded object-oriented programs
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Escape analysis for JavaTM: Theory and practice
ACM Transactions on Programming Languages and Systems (TOPLAS)
Stack allocation and synchronization optimizations for Java using escape analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Pointer analysis of multithreaded Java programs
Proceedings of the 2003 ACM symposium on Applied computing
Importance of heap specialization in pointer analysis
Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Fragment Class Analysis for Testing of Polymorphism in Java Software
IEEE Transactions on Software Engineering
Formal Methods in System Design
Proceedings of the 4th international symposium on Memory management
Parameterized object sensitivity for points-to analysis for Java
ACM Transactions on Software Engineering and Methodology (TOSEM)
Automatically Reducing Repetitive Synchronization with a Just-in-Time Compiler for Java
Proceedings of the international symposium on Code generation and optimization
Escape analysis in the context of dynamic compilation and deoptimization
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments
Context- and path-sensitive memory leak detection
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Refactoring support for class library migration
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Runtime Analysis of Atomicity for Multithreaded Programs
IEEE Transactions on Software Engineering
Compiler optimizations for nondeferred reference: counting garbage collection
Proceedings of the 5th international symposium on Memory management
Optimistic stack allocation for java-like languages
Proceedings of the 5th international symposium on Memory management
Refinement-based context-sensitive points-to analysis for Java
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Escape analysis for synchronization removal
Proceedings of the 2006 ACM symposium on Applied computing
Message analysis for concurrent programs using message passing
ACM Transactions on Programming Languages and Systems (TOPLAS)
A two-phase escape analysis for parallel java programs
Proceedings of the 15th international conference on Parallel architectures and compilation techniques
Efficient memory management for concurrent programs that use message passing
Science of Computer Programming - Special issue on five perspectives on modern memory management: Systems, hardware and theory
Interprocedural slicing of multithreaded programs with applications to Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Deriving escape analysis by abstract interpretation
Higher-Order and Symbolic Computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Saturn: A scalable framework for error detection using Boolean satisfiability
ACM Transactions on Programming Languages and Systems (TOPLAS) - Special issue on POPL 2005
Static Analysis of Object References in RMI-Based Java Software
IEEE Transactions on Software Engineering
Enforcing isolation and ordering in STM
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Making context-sensitive points-to analysis with heap cloning practical for the real world
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Run-Time Support for Optimizations Based on Escape Analysis
Proceedings of the International Symposium on Code Generation and Optimization
Practical escape analyses: how good are they?
Proceedings of the 3rd international conference on Virtual execution environments
Detecting data races using dynamic escape analysis based on read barrier
VM'04 Proceedings of the 3rd conference on Virtual Machine Research And Technology Symposium - Volume 3
Can a shape analysis work at run-time?
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
TRaDe, a topological approach to on-the-fly race detection in java programs
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
WODA '07 Proceedings of the 5th International Workshop on Dynamic Analysis
An Efficient, Parametric Fixpoint Algorithm for Analysis of Java Bytecode
Electronic Notes in Theoretical Computer Science (ENTCS)
Composition inference for UML class diagrams
Automated Software Engineering
Merging equivalent contexts for scalable heap-cloning-based context-sensitive points-to analysis
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
A Flexible, (C)LP-Based Approach to the Analysis of Object-Oriented Programs
Logic-Based Program Synthesis and Transformation
A bottom-up pointer analysis using the update history
Information and Software Technology
Precise slicing of concurrent programs
Automated Software Engineering
FlexSync: An aspect-oriented approach to Java synchronization
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Fast and precise points-to analysis
Information and Software Technology
Abstract Interpretation and Object-oriented Programming: Quo Vadis?
Electronic Notes in Theoretical Computer Science (ENTCS)
A practical escape and effect analysis for building lightweight method summaries
CC'07 Proceedings of the 16th international conference on Compiler construction
Message analysis for concurrent languages
SAS'03 Proceedings of the 10th international conference on Static analysis
Dimensions of precision in reference analysis of object-oriented programming languages
CC'03 Proceedings of the 12th international conference on Compiler construction
IDE dataflow analysis in the presence of large object-oriented libraries
CC'08/ETAPS'08 Proceedings of the Joint European Conferences on Theory and Practice of Software 17th international conference on Compiler construction
A dynamic evaluation of the precision of static heap abstractions
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Static analysis of dynamic schedules and its application to optimization of parallel programs
LCPC'10 Proceedings of the 23rd international conference on Languages and compilers for parallel computing
Advanced chopping of sequential and concurrent programs
Software Quality Control
Efficient computation of may-happen-in-parallel information for concurrent java programs
LCPC'05 Proceedings of the 18th international conference on Languages and Compilers for Parallel Computing
Evaluating the impact of thread escape analysis on a memory consistency model-aware compiler
LCPC'05 Proceedings of the 18th international conference on Languages and Compilers for Parallel Computing
Optimizing c multithreaded memory management using thread-local storage
CC'05 Proceedings of the 14th international conference on Compiler Construction
A practical MHP information analysis for concurrent java programs
LCPC'04 Proceedings of the 17th international conference on Languages and Compilers for High Performance Computing
Optimizing the java piped i/o stream library for performance
LCPC'02 Proceedings of the 15th international conference on Languages and Compilers for Parallel Computing
Transparently reconciling transactions with locking for java synchronization
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Interprocedural dataflow analysis in the presence of large libraries
CC'06 Proceedings of the 15th international conference on Compiler Construction
On a Technique for Transparently Empowering Classical Compiler Optimizations on Multithreaded Code
ACM Transactions on Programming Languages and Systems (TOPLAS)
Rethinking Soot for summary-based whole-program analysis
Proceedings of the ACM SIGPLAN International Workshop on State of the Art in Java Program analysis
Lock removal for concurrent trace programs
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
Making the java memory model safe
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interprocedural strength reduction of critical sections in explicitly-parallel programs
PACT '13 Proceedings of the 22nd international conference on Parallel architectures and compilation techniques
Parallelization of multimedia applications on the multi-level computing architecture
Journal of Embedded Computing
Hi-index | 0.00 |
We present a new technique for removing unnecessary synchronization operations from statically compiled Java programs. Our approach improves upon current efforts based on escape analysis, as it can eliminate synchronization operations even on objects that escape their allocating threads. It makes use of a compact, equivalence-class-based representation that eliminates the need for fixed point operations during the analysis. We describe and evaluate the performance of an implementation in theMarmot native Java compiler. For the benchmark programs examined, the optimization removes 100% of the dynamic synchronization operations in single-threaded programs, and 0-99% in multi-threaded programs, at a low cost in additional compilation time and code growth.