POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Algebraic reconstruction of types and effects
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Software caching and computation migration in Olden
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Typed memory management in a calculus of capabilities
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Compositional pointer and escape analysis for Java programs
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Using shape analysis to reduce finite-state models of concurrent Java programs
ACM Transactions on Software Engineering and Methodology (TOSEM)
Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
Which pointer analysis should I use?
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Using data groups to specify and check side effects
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
Korat: automated testing based on Java predicates
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Ownership, encapsulation and the disjointness of type and effect
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Data Flow Analysis for Software Prefetching Linked Data Structures in Java
Proceedings of the 2001 International Conference on Parallel Architectures and Compilation Techniques
CHASE: A Static Checker for JML's Assignable Clause
VMCAI 2003 Proceedings of the 4th International Conference on Verification, Model Checking, and Abstract Interpretation
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
Adapting side effects analysis for modular program model checking
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
Precise Identification of Side-Effect-Free Methods in Java
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
A classification system and analysis for aspect-oriented programs
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
Preliminary design of JML: a behavioral interface specification language for java
ACM SIGSOFT Software Engineering Notes
Mining object behavior with ADABU
Proceedings of the 2006 international workshop on Dynamic systems analysis
Lightweight extraction of syntactic specifications
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Interprocedural side-effect analysis for incomplete object-oriented software modules
Journal of Systems and Software
Ownership and Immutability Inference for UML-Based Object Access Control
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
Static specification mining using automata-based abstractions
Proceedings of the 2007 international symposium on Software testing and analysis
Type qualifier inference for java
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Combined static and dynamic mutability analysis
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Automatic inference of stationary fields: a generalization of java's final fields
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Quantitative information flow as network flow capacity
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the 10th annual conference companion on Genetic and evolutionary computation
Proceedings of the 10th annual conference on Genetic and evolutionary computation
Reasoning about Object Structures Using Ownership
Verified Software: Theories, Tools, Experiments
Implications of a Data Structure Consistency Checking System
Verified Software: Theories, Tools, Experiments
ReCrash: Making Software Failures Reproducible by Preserving Object States
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Inference of Reference Immutability
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Verifiable functional purity in java
Proceedings of the 15th ACM conference on Computer and communications security
Expressive and modular predicate dispatch for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Universe Types for Topology and Encapsulation
Formal Methods for Components and Objects
Mostly-Functional Behavior in Java Programs
VMCAI '09 Proceedings of the 10th International Conference on Verification, Model Checking, and Abstract Interpretation
Parameter reference immutability: formal definition, inference tool, and comparison
Automated Software Engineering
Information and Software Technology
Abstract Interpretation and Object-oriented Programming: Quo Vadis?
Electronic Notes in Theoretical Computer Science (ENTCS)
A termination analyzer for Java bytecode based on path-length
ACM Transactions on Programming Languages and Systems (TOPLAS)
Practical reasoning about invocations and implementations of pure methods
FASE'07 Proceedings of the 10th international conference on Fundamental approaches to software engineering
A practical escape and effect analysis for building lightweight method summaries
CC'07 Proceedings of the 16th international conference on Compiler construction
Immutable objects for a java-like language
ESOP'07 Proceedings of the 16th European conference on Programming
Verification of equivalent-results methods
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Safe programmable speculative parallelism
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Mutation-driven generation of unit tests and oracles
Proceedings of the 19th international symposium on Software testing and analysis
TAPP'10 Proceedings of the 2nd conference on Theory and practice of provenance
Verifying executable object-oriented specifications with separation logic
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Transactional consistency and automatic management in an application data cache
OSDI'10 Proceedings of the 9th USENIX conference on Operating systems design and implementation
A shape analysis for optimizing parallel graph programs
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Transformation for class immutability
Proceedings of the 33rd International Conference on Software Engineering
Refactoring Java programs for flexible locking
Proceedings of the 33rd International Conference on Software Engineering
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
Using automatic persistent memoization to facilitate data analysis scripting
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Purity analysis: an abstract interpretation formulation
SAS'11 Proceedings of the 18th international conference on Static analysis
Side-effect analysis of assembly code
SAS'11 Proceedings of the 18th international conference on Static analysis
Immutable specifications for more concise and precise verification
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Separating ownership topology and encapsulation with generic universe types
ACM Transactions on Programming Languages and Systems (TOPLAS)
Augmenting automatically generated unit-test suites with regression oracle checking
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Behavioral interface specification languages
ACM Computing Surveys (CSUR)
Iterative mining of resource-releasing specifications
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
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
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Modular heap analysis for higher-order programs
SAS'12 Proceedings of the 19th international conference on Static Analysis
A Transformation Framework for Optimizing Task-Parallel Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Concurrent libraries with foresight
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
A flow-insensitive, modular effect system for purity
Proceedings of the 15th Workshop on Formal Techniques for Java-like Programs
Aliasing in Object-Oriented Programming
Object ownership in program verification
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
We present a new purity and side effect analysis for Java programs. A method is pure if it does not mutate any location that exists in the program state right before the invocation of the method. Our analysis is built on top of a combined pointer and escape analysis, and is able to determine that methods are pure even when the methods mutate the heap, provided they mutate only new objects. Our analysis provides useful information even for impure methods. In particular, it can recognize read-only parameters (a parameter is read-only if the method does not mutate any objects transitively reachable from the parameter) and safe parameters (a parameter is safe if it is read-only and the method does not create any new externally visible heap paths to objects transitively reachable from the parameter). The analysis can also generate regular expressions that characterize the externally visible heap locations that the method mutates. We have implemented our analysis and used it to analyze several applications. Our results show that our analysis effectively recognizes a variety of pure methods, including pure methods that allocate and mutate complex auxiliary data structures.