| java.lang.Object gov.nasa.jpf.jvm.ElementInfo
All known Subclasses: gov.nasa.jpf.jvm.DynamicElementInfo, gov.nasa.jpf.jvm.StaticElementInfo,
ElementInfo | abstract public class ElementInfo implements Storable,Reference,Cloneable(Code) | | Describes an element of memory containing the field values of a class or an
object. In the case of a class, contains the values of the static fields. For
an object contains the values of the object fields.
See Also: gov.nasa.jpf.jvm.FieldInfo |
Method Summary | |
void | _printAttributes(String cls, String msg, int oldAttrs) | public int | arrayLength() | public boolean[] | asBooleanArray() | public byte[] | asByteArray() | public char[] | asCharArray() | public double[] | asDoubleArray() | public float[] | asFloatArray() | public int[] | asIntArray() | public long[] | asLongArray() | public short[] | asShortArray() | public String | asString() | public void | backtrackTo(ArrayOffset storing, Object backtrack) | public boolean | canLock(ThreadInfo th) | public void | checkArrayBounds(int index) | public void | checkLongArrayBounds(int index) | public Object | clone() | protected Fields | cloneFields() | protected Monitor | cloneMonitor() | public boolean | equals(Object other) | public Area | getArea() | public String | getArrayType() | public Object | getBacktrackData() | public boolean | getBooleanField(String fname, String refType) | public byte | getByteField(String fname, String refType) | public char | getCharArrayElement(int index) | public char | getCharField(String fname, String refType) | public ClassInfo | getClassInfo() | public double | getDoubleField(String fname, String refType) | public int | getElement(int index) | abstract protected ElementInfo | getElementInfo(ClassInfo ci) | abstract protected FieldInfo | getFieldInfo(String clsBase, String fname) | protected FieldInfo | getFieldInfo(String fname) | abstract public FieldInfo | getFieldInfo(int i) | public FieldLockInfo | getFieldLockInfo(String fid) | protected int | getFieldsIndex() | public float | getFloatField(String fname, String refType) | public int | getHeapSize() | public int | getIndex() | public int | getIntArrayElement(int findex) | public int | getIntField(String fname) | public int | getIntField(String fname, String clsBase) | public int | getIntField(FieldInfo fi) | public int | getLockCount() | public int | getLockingThread() | public long | getLongArrayElement(int findex) | public long | getLongElement(int index) | public long | getLongField(String fname) | public long | getLongField(String fname, String clsBase) | public long | getLongField(FieldInfo fi) | protected int | getMonitorIndex() | abstract public int | getNumberOfFields() | public Reference | getObjectField(String fname, String referenceType) | abstract protected Ref | getRef() The various lock methods need access to a Ref object to do their work. | public int | getReferenceField(String fname, String clsBase) | public int | getReferenceField(String fname) | public short | getShortField(String fname, String refType) | public int[] | getStoringData() | public int | getStoringDataLength() | public String | getStringField(String fname, String referenceType) | public int | getThisReference() | public String | getType() | public int[] | getWaitingThreads() | boolean | hasEqualPropagatedAttributes(int refAttrs, int attrMask) | boolean | hasRefField(int objRef) | public void | hash(HashData hd) | public int | hashCode() | public boolean | instanceOf(String type) | public void | interrupt() | public boolean | isArray() | public boolean | isImmutable() | public boolean | isLocked() | boolean | isLockedBy(ThreadInfo ti) | public boolean | isNull() | public boolean | isSchedulingRelevant() | public boolean | isShared() | public Vector | linearize(Vector result) | public void | lock(ThreadInfo th) | public void | lockNotified(ThreadInfo th) | public void | log() | void | markRecursive(int tid, int attrMask) the recursive phase2 marker entry, which propagates the attributes set by a
previous phase1. | public boolean | needsAttributePropagationFrom(ElementInfo ei) | public void | notifies() | public void | notifiesAll() | public boolean | outOfBounds(int index) | public void | pinDown(boolean keepAlive) | void | propagateAttributes(int refAttr, int attrMask) | public void | setArea(Area newArea) | public void | setElement(int index, int value) | public void | setFieldLockInfo(String fid, FieldLockInfo flInfo) | protected void | setFieldsIndex(int index) | public void | setIndex(int newIndex) | public void | setIntField(FieldInfo fi, int value) | public void | setIntField(String fname, String clsBase, int value) | public void | setIntField(String fname, int value) | public void | setLongElement(int index, long value) | public void | setLongField(String fname, long value) | public void | setLongField(String fname, String clsBase, long value) | public void | setLongField(FieldInfo fi, long val) | protected void | setMonitorIndex(int index) | public void | setReferenceField(FieldInfo fi, int value) | public void | setReferenceField(String fname, String clsBase, int value) | public void | setReferenceField(String fname, int value) | void | setShared() | void | setShared(int attrMask) | public int | storeDataTo(int[] buffer, int idx) | public String | toString() | public void | unlock(ThreadInfo th) | void | updateLockingInfo() | void | updateReachability(int oldRef, int newRef) | public void | wait(ThreadInfo th) |
ATTR_IMMUTABLE | final public static int ATTR_IMMUTABLE(Code) | | |
ATTR_NONE | final public static int ATTR_NONE(Code) | | |
ATTR_NO_PROMOTE | final public static int ATTR_NO_PROMOTE(Code) | | |
ATTR_NO_PROPAGATE | final public static int ATTR_NO_PROPAGATE(Code) | | |
ATTR_PINDOWN | final public static int ATTR_PINDOWN(Code) | | |
ATTR_PROP_MASK | final public static int ATTR_PROP_MASK(Code) | | |
ATTR_PROTECTED | final public static int ATTR_PROTECTED(Code) | | |
ATTR_SINGLE_WRITER | final public static int ATTR_SINGLE_WRITER(Code) | | |
ATTR_TSHARED | final public static int ATTR_TSHARED(Code) | | |
attributes | protected int attributes(Code) | | |
fIndex | protected int fIndex(Code) | | |
index | protected int index(Code) | | |
mIndex | protected int mIndex(Code) | | |
storingDataLength | final static int storingDataLength(Code) | | |
ElementInfo | protected ElementInfo()(Code) | | |
arrayLength | public int arrayLength()(Code) | | |
asBooleanArray | public boolean[] asBooleanArray()(Code) | | |
asByteArray | public byte[] asByteArray()(Code) | | |
asCharArray | public char[] asCharArray()(Code) | | |
asDoubleArray | public double[] asDoubleArray()(Code) | | |
asFloatArray | public float[] asFloatArray()(Code) | | |
asIntArray | public int[] asIntArray()(Code) | | |
asLongArray | public long[] asLongArray()(Code) | | |
asShortArray | public short[] asShortArray()(Code) | | |
equals | public boolean equals(Object other)(Code) | | a bit simplistic, but will do for object equalness
|
getCharArrayElement | public char getCharArrayElement(int index)(Code) | | |
getElement | public int getElement(int index)(Code) | | |
getFieldsIndex | protected int getFieldsIndex()(Code) | | |
getHeapSize | public int getHeapSize()(Code) | | answer an estimate of the heap size in bytes (this is of course VM
dependent, but we can give an upper bound for the fields/elements, and that
should be good in terms of application specific properties)
|
getIndex | public int getIndex()(Code) | | |
getIntArrayElement | public int getIntArrayElement(int findex)(Code) | | |
getLockCount | public int getLockCount()(Code) | | |
getLockingThread | public int getLockingThread()(Code) | | |
getLongArrayElement | public long getLongArrayElement(int findex)(Code) | | |
getLongElement | public long getLongElement(int index)(Code) | | |
getMonitorIndex | protected int getMonitorIndex()(Code) | | |
getNumberOfFields | abstract public int getNumberOfFields()(Code) | | |
getRef | abstract protected Ref getRef()(Code) | | The various lock methods need access to a Ref object to do their work. The
subclass should return an appropriate type. This is a simple factory
method.
the right kind of Ref object for the given ElementInfo |
getReferenceField | public int getReferenceField(String fname)(Code) | | |
getStoringData | public int[] getStoringData()(Code) | | |
getStoringDataLength | public int getStoringDataLength()(Code) | | <2do>pcm - these two will become the new Storable interface (but that has
a huge fan out)
|
getThisReference | public int getThisReference()(Code) | | |
getWaitingThreads | public int[] getWaitingThreads()(Code) | | |
hasEqualPropagatedAttributes | boolean hasEqualPropagatedAttributes(int refAttrs, int attrMask)(Code) | | |
hasRefField | boolean hasRefField(int objRef)(Code) | | do we have a reference field with value objRef?
|
hashCode | public int hashCode()(Code) | | |
interrupt | public void interrupt()(Code) | | |
isArray | public boolean isArray()(Code) | | |
isImmutable | public boolean isImmutable()(Code) | | |
isLocked | public boolean isLocked()(Code) | | |
isNull | public boolean isNull()(Code) | | |
isSchedulingRelevant | public boolean isSchedulingRelevant()(Code) | | |
isShared | public boolean isShared()(Code) | | |
markRecursive | void markRecursive(int tid, int attrMask)(Code) | | the recursive phase2 marker entry, which propagates the attributes set by a
previous phase1. This one is called on all 'root'-marked objects after
phase1 is completed. ElementInfo is not an ideal place for this method, as
it has to access some innards of both ClassInfo (FieldInfo container) and
Fields. But on the other hand, we want to keep the whole heap traversal
business as much centralized in ElementInfo and DynamicArea as possible
|
needsAttributePropagationFrom | public boolean needsAttributePropagationFrom(ElementInfo ei)(Code) | | check if there are any propagated attributes in ei we don't have yet
|
notifies | public void notifies()(Code) | | |
notifiesAll | public void notifiesAll()(Code) | | |
outOfBounds | public boolean outOfBounds(int index)(Code) | | |
pinDown | public void pinDown(boolean keepAlive)(Code) | | imperatively set GC status
Parameters: keepAlive - -true: keep alive no matter what, false: gc normally |
propagateAttributes | void propagateAttributes(int refAttr, int attrMask)(Code) | | |
setElement | public void setElement(int index, int value)(Code) | | |
setFieldsIndex | protected void setFieldsIndex(int index)(Code) | | |
setIndex | public void setIndex(int newIndex)(Code) | | |
setIntField | public void setIntField(String fname, int value)(Code) | | |
setLongElement | public void setLongElement(int index, long value)(Code) | | |
setLongField | public void setLongField(String fname, long value)(Code) | | |
setMonitorIndex | protected void setMonitorIndex(int index)(Code) | | |
setReferenceField | public void setReferenceField(FieldInfo fi, int value)(Code) | | |
setReferenceField | public void setReferenceField(String fname, String clsBase, int value)(Code) | | |
setReferenceField | public void setReferenceField(String fname, int value)(Code) | | |
setShared | void setShared()(Code) | | |
setShared | void setShared(int attrMask)(Code) | | set shared, but only if the ATTR_TSHARED bit isn't masked out
|
storeDataTo | public int storeDataTo(int[] buffer, int idx)(Code) | | this is the heavy duty state storer for ElementInfos
|
updateLockingInfo | void updateLockingInfo()(Code) | | |
updateReachability | void updateReachability(int oldRef, int newRef)(Code) | | |
|
|