de.rwth.dfa.jvm
Class FactorisedFlowGraphSolver

java.lang.Object
  |
  +--de.rwth.dfa.jvm.Solver
        |
        +--de.rwth.dfa.jvm.GraphSolver
              |
              +--de.rwth.dfa.jvm.FactorisedFlowGraphSolver
Direct Known Subclasses:
FactorisedBasicBlockGraphSolver, FlowGraphSolver

public class FactorisedFlowGraphSolver
extends GraphSolver

A JVM abstraction solver using factorised flow graphs.

Version:
$Id: FactorisedFlowGraphSolver.java,v 1.2 2002/09/17 06:53:53 mohnen Exp $
Author:
Markus Mohnen

Fields inherited from class de.rwth.dfa.jvm.Solver
abstraction, iterations, memory, methodExceptions, methodInstrs, methodName, stopwatch
 
Constructor Summary
FactorisedFlowGraphSolver(Abstraction abstraction, java.lang.String methodName, de.fub.bytecode.generic.InstructionList methodInstrs, de.fub.bytecode.classfile.CodeException[] methodExceptions)
          Creates a new FactorisedFlowGraphSolver instance with out stop watch.
FactorisedFlowGraphSolver(Abstraction abstraction, java.lang.String methodName, de.fub.bytecode.generic.InstructionList methodInstrs, de.fub.bytecode.classfile.CodeException[] methodExceptions, Stopwatch stopwatch)
          Creates a new FactorisedFlowGraphSolver instance with stop watch.
 
Method Summary
protected  RootedGraph createGraph()
          Creates a factorised flow graph for a method.
protected  java.lang.Object getFunction(RootedGraph.Node n)
          Computes the transfer function for a node, i.e.
protected  java.lang.Object getInit(RootedGraph.Node n, boolean isForward)
          Computes the initial value for a node, i.e.
protected  java.util.Hashtable nodesToIndex(Graph graph)
          Computes a hash table associating nodes with indices in the solution array.
protected  void transferSolution(RootedGraph graph, Graph.NodeDyer gsolution, boolean isForward, boolean isAll, java.lang.Object[] solution)
          Transfers the solution associated with the flow graph nodes to an array.
 
Methods inherited from class de.rwth.dfa.jvm.GraphSolver
compute
 
Methods inherited from class de.rwth.dfa.jvm.Solver
getIterations, getMemory, getSolution
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FactorisedFlowGraphSolver

public FactorisedFlowGraphSolver(Abstraction abstraction,
                                 java.lang.String methodName,
                                 de.fub.bytecode.generic.InstructionList methodInstrs,
                                 de.fub.bytecode.classfile.CodeException[] methodExceptions,
                                 Stopwatch stopwatch)
Creates a new FactorisedFlowGraphSolver instance with stop watch.
Parameters:
abstraction - an Abstraction value
methodName - a String value
methodInstrs - an InstructionList value
methodExceptions - a CodeException[] value
stopwatch - a Stopwatch value

FactorisedFlowGraphSolver

public FactorisedFlowGraphSolver(Abstraction abstraction,
                                 java.lang.String methodName,
                                 de.fub.bytecode.generic.InstructionList methodInstrs,
                                 de.fub.bytecode.classfile.CodeException[] methodExceptions)
Creates a new FactorisedFlowGraphSolver instance with out stop watch.
Parameters:
abstraction - an Abstraction value
methodName - a String value
methodInstrs - an InstructionList value
methodExceptions - a CodeException[] value
stopwatch - a Stopwatch value
Method Detail

nodesToIndex

protected java.util.Hashtable nodesToIndex(Graph graph)
Computes a hash table associating nodes with indices in the solution array.
Parameters:
graph - a Graph value
Returns:
a Hashtable value

createGraph

protected RootedGraph createGraph()
Creates a factorised flow graph for a method.
Overrides:
createGraph in class GraphSolver
Returns:
a RootedGraph value

getInit

protected java.lang.Object getInit(RootedGraph.Node n,
                                   boolean isForward)
Computes the initial value for a node, i.e. for a single instruction.
Overrides:
getInit in class GraphSolver
Parameters:
n - a RootedGraph.Node value
Returns:
an Object value

getFunction

protected java.lang.Object getFunction(RootedGraph.Node n)
Computes the transfer function for a node, i.e. for a single instruction.
Overrides:
getFunction in class GraphSolver
Parameters:
n - a RootedGraph.Node value
Returns:
an Object value

transferSolution

protected void transferSolution(RootedGraph graph,
                                Graph.NodeDyer gsolution,
                                boolean isForward,
                                boolean isAll,
                                java.lang.Object[] solution)
Transfers the solution associated with the flow graph nodes to an array.
Overrides:
transferSolution in class GraphSolver
Parameters:
graph - a RootedGraph value
gsolution - a Graph.NodeDyer value
isForward - a boolean value
isAll - a boolean value
solution - an Object[] value