chord.analyses.thread
Class ThreadsAnalysis

java.lang.Object
  extended by chord.project.analyses.JavaAnalysis
      extended by chord.analyses.thread.ThreadsAnalysis
All Implemented Interfaces:
ITask

public class ThreadsAnalysis
extends JavaAnalysis

Static analysis computing reachable abstract threads.

Domain A is the domain of reachable abstract threads. The 0th element does not denote any abstract thread; it is a placeholder for convenience. The 1st element denotes the main thread. The remaining elements denote threads explicitly created by calling the java.lang.Thread.start() method; there is a separate element for each abstract object to which the this argument of that method may point, as dictated by the points-to analysis used.

Relation threadAOCM contains each tuple (a,o,c,m) such that abstract thread 'a' corresponds to abstract object 'o' and is started at thread-root method 'm' in abstract context 'c'. Thread-root method 'm' may be either: - the main method, in which case 'o' and 'c' are both epsilon (element 0 in domain C), or - the java.lang.Thread.start() method, in which case 'o' is a non-epsilon element in domain C of the form [..., h] where 'h' is the site at which the thread is allocated, and 'c' may be epsilon (if the call graph is built using 0-CFA) or it may be a chain of possibly interspersed call/allocation sites (if the call graph is built using k-CFA or k-object-sensitive analysis or a combination of the two).

Author:
Mayur Naik (mhn@cs.stanford.edu)

Field Summary
 
Fields inherited from class chord.project.analyses.JavaAnalysis
consumes, controls, name, produces
 
Constructor Summary
ThreadsAnalysis()
           
 
Method Summary
 void run()
          Executes this analysis in a "classic" project.
 
Methods inherited from class chord.project.analyses.JavaAnalysis
getName, run, setName, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ThreadsAnalysis

public ThreadsAnalysis()
Method Detail

run

public void run()
Description copied from interface: ITask
Executes this analysis in a "classic" project. This method must usually not be called directly. The correct way to call it is to call ClassicProject.runTask(String) or ClassicProject.runTask(ITask), providing this analysis either by its name or its object.

Specified by:
run in interface ITask
Overrides:
run in class JavaAnalysis