harpoon.Analysis.PA2.Mutation
Class MutationAnalysis

java.lang.Object
  extended by harpoon.Analysis.PA2.Mutation.MutationAnalysis

public class MutationAnalysis
extends Object

MutationAnalysis

Version:
$Id: MutationAnalysis.java,v 1.6 2005/09/13 19:16:27 salcianu Exp $
Author:
Alexandru Salcianu <salcianu@alum.mit.edu>

Constructor Summary
MutationAnalysis(PointerAnalysis pa)
          Creates a MutationAnalysis query object.
 
Method Summary
 Collection<jpaul.DataStructs.Pair<PANode,HField>> getMutatedAbstrFields(HMethod hm)
           
 jpaul.RegExps.RegExp<MLabel> getMutationRegExp(HMethod hm)
           
 List<Integer> getSafeParamIndices(HMethod hm)
           
 List<ParamInfo> getSafeParams(HMethod hm)
           
 boolean isPure(HMethod hm)
          Checks whether hm is a pure methods, according to the JML definition.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MutationAnalysis

public MutationAnalysis(PointerAnalysis pa)
Creates a MutationAnalysis query object.

Parameters:
pa - Underlying pointer analysis.
Method Detail

isPure

public boolean isPure(HMethod hm)
               throws NoAnalysisResultException
Checks whether hm is a pure methods, according to the JML definition. A method is pure if it mutates only objects that did not exist when the method was invoked; in addition, pure constructors are allowed to mutate the this object. The JML purity definition also precludes pure methods from doing I/O. However, we separate heap mutation and I/O operations. This analysis deals only with heap mutations. IOEffectAnalysis is an orthogonal analysis that handles I/O mutation.

Throws:
NoAnalysisResultException

getMutationRegExp

public jpaul.RegExps.RegExp<MLabel> getMutationRegExp(HMethod hm)
                                               throws NoAnalysisResultException
Throws:
NoAnalysisResultException

getMutatedAbstrFields

public Collection<jpaul.DataStructs.Pair<PANode,HField>> getMutatedAbstrFields(HMethod hm)
                                                                        throws NoAnalysisResultException
Throws:
NoAnalysisResultException

getSafeParamIndices

public List<Integer> getSafeParamIndices(HMethod hm)
                                  throws NoAnalysisResultException
Throws:
NoAnalysisResultException

getSafeParams

public List<ParamInfo> getSafeParams(HMethod hm)
                              throws NoAnalysisResultException
Throws:
NoAnalysisResultException