de.rwth.dfa.jvm.samples
Class LVAbstraction
java.lang.Object
|
+--de.rwth.dfa.jvm.samples.LVAbstraction
- All Implemented Interfaces:
- Abstraction
- public class LVAbstraction
- extends java.lang.Object
- implements Abstraction
Implementation of a live variables abstraction. It can be used to determine the
dead local variable slots for each instruction of a JVM method. The domain used is
a BitVectorLattice with one bit for each slot. If the bit is not set in
the result, then the slot is definitely dead. If it is set, the slot may be live
or not.
- Version:
- $Id: LVAbstraction.java,v 1.4 2002/09/17 06:53:53 mohnen Exp $
- Author:
- Markus Mohnen
|
Constructor Summary |
LVAbstraction(int maxLocals)
Creates a new LVAbstraction instance. |
LVAbstraction(de.fub.bytecode.classfile.Method m)
Creates a new LVAbstraction instance. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
b
protected BitVectorLattice b
- The lattice of this abstraction.
LVAbstraction
public LVAbstraction(int maxLocals)
- Creates a new
LVAbstraction instance.
- Parameters:
maxLocals - an int value: The maximal number of used slots in
the method.
LVAbstraction
public LVAbstraction(de.fub.bytecode.classfile.Method m)
- Creates a new
LVAbstraction instance.
- Parameters:
m - a Method value
getLattice
public Lattice getLattice()
- Returns the lattice of this abstraction.
- Specified by:
getLattice in interface Abstraction
- Returns:
- a
Lattice value
getInitialValue
public java.lang.Object getInitialValue(de.fub.bytecode.generic.InstructionHandle ih,
boolean isRoot)
- Returns the bottom element of the lattice where all bits are not set.
- Specified by:
getInitialValue in interface Abstraction
- Parameters:
ih - an InstructionHandle valueisRoot - a boolean value- Returns:
- an
Object value
getDirection
public int getDirection()
- Returns
DIRECTION_BACKWARD.
- Specified by:
getDirection in interface Abstraction
- Returns:
- an
int value
getQuantifier
public int getQuantifier()
- Returns
QUANTIFIER_EXISTS.
- Specified by:
getQuantifier in interface Abstraction
- Returns:
- an
int value
getAbstract
public Function getAbstract(de.fub.bytecode.generic.InstructionHandle ih)
- Returns a
KillGenBitVectorFunction for an instruction. The bits for
those slots which are made dead (by overwriting the value) are killed, those
which are made live (by accessing the value) are generated by the function.
- Specified by:
getAbstract in interface Abstraction
- Parameters:
ih - an InstructionHandle value- Returns:
- a
Function value
getInitialValue
public java.lang.Object getInitialValue(InstructionHandleVector ihv,
boolean isRoot)
- Returns the value of the default implementation in
Abstraction.Default.
- Specified by:
getInitialValue in interface Abstraction
- Parameters:
ihv - an InstructionHandleVector valueisRoot - a boolean value- Returns:
- an
Object value
getAbstract
public Function getAbstract(InstructionHandleVector ihv)
- Returns a new
KillGenBitVectorFunction for a vector of
instructions. This is much more efficient than using the default implementation
in Abstraction.Default.
- Specified by:
getAbstract in interface Abstraction
- Parameters:
ihv - an InstructionHandleVector value- Returns:
- a
Function value