|
![]() SandMark version 3.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object | +--sandmark.watermark.ct.trace.callforest.Build
| Nested Class Summary | |
(package private) static class |
Build.Data
|
| Field Summary | |
(package private) TracePoint[] |
annotationPoints
|
(package private) java.lang.String |
annotatorClass
|
(package private) ClassHierarchy |
classHierarchy
|
(package private) static int |
DEFAULT_WEIGHT
|
(package private) java.util.Vector |
forest
|
(package private) java.util.Properties |
props
|
(package private) java.util.Hashtable |
root2Graph
|
(package private) StorageClass[] |
storageClasses
|
| Constructor Summary | |
Build(TracePoint[] annotationPoints,
ClassHierarchy classHierarchy,
java.util.Properties props)
|
|
| Method Summary | |
(package private) java.util.Vector |
build()
Build the information flow graph. |
(package private) boolean |
isMarkMethod(MethodID method)
Return true if method is one of the mark()-methods in the annotator class. |
(package private) Graph |
newGraph(StackFrame root)
Create a new graph (if necessary) corresponding to the bottom (root) stack frame of a thread. |
(package private) boolean |
okToAddStorageArgument(MethodID method)
Return true if it OK to add a storage argument to this method. |
(package private) boolean |
sameStackFrame(StackFrame s1,
StackFrame s2)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
TracePoint[] annotationPoints
java.util.Properties props
java.lang.String annotatorClass
ClassHierarchy classHierarchy
StorageClass[] storageClasses
java.util.Vector forest
java.util.Hashtable root2Graph
static final int DEFAULT_WEIGHT
| Constructor Detail |
public Build(TracePoint[] annotationPoints,
ClassHierarchy classHierarchy,
java.util.Properties props)
| Method Detail |
java.util.Vector build()
j==0 j==1
=============================================================
+-------+
0 |sm$mark| <--- topFrame
+-------+ +-------+ ^^
0 |sm$mark| 1 | | ||
+-------+ +-------+ ||
1 | | 2 |callee | <--- calleeFrame <-- i ||
+-------+ +-------+ ||
2 | | 3 |caller | <--- callerFrame ||
+-------+ +-------+ ||
3 | | 4 | | ||
+-------+ +-------+
4 | main | 5 | main | <-- bottomFrame
+-------+ +-------+
lastStack currentStack
Note that, for some retarded reason, sm$mark is at the bottom of
the stack, not the top. In other words, stacks grow from high
indices to low. This means that the lastStack and the currentStack
are indexed differently.
lastStackCurrentFrameIndex holds the index of the frame
in the last stack corresponding to the current frame in the
current stack.
data is a matrix that holds data for each stack
frame. data[j][i] holds the nodes created for frame i in stack j.
Graph newGraph(StackFrame root)
root - The first (bottom) call frame of a threadboolean isMarkMethod(MethodID method)
method - the methodboolean okToAddStorageArgument(MethodID method)
method - the method
boolean sameStackFrame(StackFrame s1,
StackFrame s2)
|
SandMark version 3.0 Wed Jan 29 10:30:05 MST 2003 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||