SandMark version 3.0


sandmark.watermark.ct.trace.callforest
Class Test

java.lang.Object
  |
  +--sandmark.watermark.ct.trace.callforest.Test

public class Test
extends java.lang.Object


Nested Class Summary
static class Test.ClassHierarchy
           
static class Test.Stats
           
 
Constructor Summary
Test()
           
 
Method Summary
static void main(java.lang.String[] args)
          Build the dynamic call-graph for methods test1, test2, test3, test4.
(package private) static StackFrame mkFrame(java.lang.String name, java.lang.String sig, java.lang.String className, long lineNumber, long codeIndex, long threadID, long frameID)
           
(package private) static TracePoint mkTracePoint(java.lang.String data, java.lang.String name, java.lang.String sig, java.lang.String className, long lineNumber, long codeIndex, StackFrame[] frames)
           
(package private) static void test1(Test.ClassHierarchy classHierarchy, Test.Stats stats, java.util.Properties props)
          Build the dynamic call-graph for this simple method: public class Simple1 { static void P() { sandmark.watermark.ct.trace.Annotator.sm$mark(); } public static void main(String args[]) { P(); } }
(package private) static void test2(Test.ClassHierarchy classHierarchy, Test.Stats stats, java.util.Properties props, boolean okToAddParam)
          Build the dynamic call-graph for this simple method: public class Simple6 { static void P() { sandmark.watermark.ct.trace.Annotator.sm$mark(); } static void Q() { sandmark.watermark.ct.trace.Annotator.sm$mark(); } public static void main(String args[]) { P(); Q(); } }
(package private) static void test3(Test.ClassHierarchy classHierarchy, Test.Stats stats, java.util.Properties props)
          Build the dynamic call-graph for this simple class: class TTTApplication { void mark() { sm$mark(); } void move() { sm$mark(); mark(); } void actionPerformed () { move() } } These are the stack frames: TRACEPT[1,LOCATION[METHOD[move,(I)V,TTTApplication], LINE=98, BC=36]] FRAME[LOCATION[METHOD[sm$mark,(J)V,sandmark.watermark.ct.trace.Annotator], LINE=59, BC=6], ID=78] FRAME[LOCATION[METHOD[move,(I)V,TTTApplication], LINE=98, BC=36], ID=67] FRAME[LOCATION[METHOD[actionPerformed,(Ljava/awt/event/ActionEvent;)V,TTTApplication$1], LINE=32, BC=20], ID=66] TRACEPT[8,LOCATION[METHOD[mark,(I)V,TTTApplication], LINE=131, BC=49]] FRAME[LOCATION[METHOD[sm$mark,(J)V,sandmark.watermark.ct.trace.Annotator], LINE=59, BC=6], ID=80] FRAME[LOCATION[METHOD[mark,(I)V,TTTApplication], LINE=131, BC=49], ID=79] FRAME[LOCATION[METHOD[move,(I)V,TTTApplication], LINE=99, BC=41], ID=67] FRAME[LOCATION[METHOD[actionPerformed,(Ljava/awt/event/ActionEvent;)V,TTTApplication$1], LINE=32, BC=20], ID=66]
(package private) static void test4(Test.ClassHierarchy classHierarchy, Test.Stats stats, java.util.Properties props)
          Build the dynamic call-graph for this simple class: public class SimpleE { static void K() { sandmark.watermark.ct.trace.Annotator.sm$mark(); } static void L() { sandmark.watermark.ct.trace.Annotator.sm$mark(); } static void M() { sandmark.watermark.ct.trace.Annotator.sm$mark(); } static void N() { sandmark.watermark.ct.trace.Annotator.sm$mark(); } static void O() { sandmark.watermark.ct.trace.Annotator.sm$mark(); N(); } static void P() { sandmark.watermark.ct.trace.Annotator.sm$mark(); O(); } static void W() { L(); sandmark.watermark.ct.trace.Annotator.sm$mark(); M(); } static void R() { K(); } static void S() { P(); W(); R(); } public static void main(String args[]) { S(); } } These are the stack frames: TRACEPT[----,LOCATION[METHOD[P,()V,SimpleE,dynamic], LINE=25, BC=0]] FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=3] FRAME[LOCATION[METHOD[P,()V,SimpleE,dynamic], LINE=25, BC=0], THRD=1, ID=2] FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=40, BC=0], THRD=1, ID=1] FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0] TRACEPT[----,LOCATION[METHOD[O,()V,SimpleE,dynamic], LINE=20, BC=0]] FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=5] FRAME[LOCATION[METHOD[O,()V,SimpleE,dynamic], LINE=20, BC=0], THRD=1, ID=4] FRAME[LOCATION[METHOD[P,()V,SimpleE,dynamic], LINE=26, BC=3], THRD=1, ID=2] FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=40, BC=0], THRD=1, ID=1] FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0] TRACEPT[----,LOCATION[METHOD[N,()V,SimpleE,dynamic], LINE=16, BC=0]] FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=7] FRAME[LOCATION[METHOD[N,()V,SimpleE,dynamic], LINE=16, BC=0], THRD=1, ID=6] FRAME[LOCATION[METHOD[O,()V,SimpleE,dynamic], LINE=21, BC=3], THRD=1, ID=4] FRAME[LOCATION[METHOD[P,()V,SimpleE,dynamic], LINE=26, BC=3], THRD=1, ID=2] FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=40, BC=0], THRD=1, ID=1] FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0] TRACEPT[----,LOCATION[METHOD[L,()V,SimpleE,dynamic], LINE=8, BC=0]] FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=10] FRAME[LOCATION[METHOD[L,()V,SimpleE,dynamic], LINE=8, BC=0], THRD=1, ID=9] FRAME[LOCATION[METHOD[W,()V,SimpleE,dynamic], LINE=30, BC=0], THRD=1, ID=8] FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=41, BC=3], THRD=1, ID=1] FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0] TRACEPT[----,LOCATION[METHOD[W,()V,SimpleE,dynamic], LINE=31, BC=3]] FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=11] FRAME[LOCATION[METHOD[W,()V,SimpleE,dynamic], LINE=31, BC=3], THRD=1, ID=8] FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=41, BC=3], THRD=1, ID=1] FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0] TRACEPT[----,LOCATION[METHOD[M,()V,SimpleE,dynamic], LINE=12, BC=0]] FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=13] FRAME[LOCATION[METHOD[M,()V,SimpleE,dynamic], LINE=12, BC=0], THRD=1, ID=12] FRAME[LOCATION[METHOD[W,()V,SimpleE,dynamic], LINE=32, BC=6], THRD=1, ID=8] FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=41, BC=3], THRD=1, ID=1] FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0] TRACEPT[----,LOCATION[METHOD[K,()V,SimpleE,dynamic], LINE=4, BC=0]] FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=16] FRAME[LOCATION[METHOD[K,()V,SimpleE,dynamic], LINE=4, BC=0], THRD=1, ID=15] FRAME[LOCATION[METHOD[R,()V,SimpleE,dynamic], LINE=36, BC=0], THRD=1, ID=14] FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=42, BC=6], THRD=1, ID=1] FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0]
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Test

public Test()
Method Detail

mkFrame

static StackFrame mkFrame(java.lang.String name,
                          java.lang.String sig,
                          java.lang.String className,
                          long lineNumber,
                          long codeIndex,
                          long threadID,
                          long frameID)

mkTracePoint

static TracePoint mkTracePoint(java.lang.String data,
                               java.lang.String name,
                               java.lang.String sig,
                               java.lang.String className,
                               long lineNumber,
                               long codeIndex,
                               StackFrame[] frames)

test1

static void test1(Test.ClassHierarchy classHierarchy,
                  Test.Stats stats,
                  java.util.Properties props)
Build the dynamic call-graph for this simple method:
 public class Simple1 {
 
    static void P() {
       sandmark.watermark.ct.trace.Annotator.sm$mark();
    }
 
    public static void main(String args[]) {
       P();
    }
 }
 


test2

static void test2(Test.ClassHierarchy classHierarchy,
                  Test.Stats stats,
                  java.util.Properties props,
                  boolean okToAddParam)
Build the dynamic call-graph for this simple method:
 public class Simple6 {
 
    static void P() {
       sandmark.watermark.ct.trace.Annotator.sm$mark();
    }
 
    static void Q() {
       sandmark.watermark.ct.trace.Annotator.sm$mark();
    }
 
    public static void main(String args[]) {
        P();
        Q();
    }
 }
 

Parameters:
classHierarchy - the class hierarchy
stats - statistics
props - properties
okToAddParam - 'false' if we should name one of the methods "Q", meaning that its argument list cannot be changed.

test3

static void test3(Test.ClassHierarchy classHierarchy,
                  Test.Stats stats,
                  java.util.Properties props)
Build the dynamic call-graph for this simple class:
 class TTTApplication {
    void mark() {
       sm$mark();
    }
 
    void move() {
       sm$mark();
       mark();
    }
 
    void actionPerformed () {
       move()
    }
 } 
 

These are the stack frames:

 TRACEPT[1,LOCATION[METHOD[move,(I)V,TTTApplication], LINE=98, BC=36]]
    FRAME[LOCATION[METHOD[sm$mark,(J)V,sandmark.watermark.ct.trace.Annotator], LINE=59, BC=6], ID=78]
    FRAME[LOCATION[METHOD[move,(I)V,TTTApplication], LINE=98, BC=36], ID=67]
    FRAME[LOCATION[METHOD[actionPerformed,(Ljava/awt/event/ActionEvent;)V,TTTApplication$1], LINE=32, BC=20], ID=66]

 TRACEPT[8,LOCATION[METHOD[mark,(I)V,TTTApplication], LINE=131, BC=49]]
    FRAME[LOCATION[METHOD[sm$mark,(J)V,sandmark.watermark.ct.trace.Annotator], LINE=59, BC=6], ID=80]
    FRAME[LOCATION[METHOD[mark,(I)V,TTTApplication], LINE=131, BC=49], ID=79]
    FRAME[LOCATION[METHOD[move,(I)V,TTTApplication], LINE=99, BC=41], ID=67]
    FRAME[LOCATION[METHOD[actionPerformed,(Ljava/awt/event/ActionEvent;)V,TTTApplication$1], LINE=32, BC=20], ID=66]
 


test4

static void test4(Test.ClassHierarchy classHierarchy,
                  Test.Stats stats,
                  java.util.Properties props)
Build the dynamic call-graph for this simple class:
 public class SimpleE {
 
     static void K() {
       sandmark.watermark.ct.trace.Annotator.sm$mark();
    }
 
     static void L() {
        sandmark.watermark.ct.trace.Annotator.sm$mark();
     }
 
     static void M() {
        sandmark.watermark.ct.trace.Annotator.sm$mark();
     }
 
     static void N() {
        sandmark.watermark.ct.trace.Annotator.sm$mark();
     }
 
     static void O() {
        sandmark.watermark.ct.trace.Annotator.sm$mark();
        N();
     }
 
     static void P() {
        sandmark.watermark.ct.trace.Annotator.sm$mark();
        O();
     }
 
     static void W() {
        L();
        sandmark.watermark.ct.trace.Annotator.sm$mark();
        M();
     }
 
     static void R() {
        K();
     }
 
     static void S() {
        P();
        W();
        R();
     }
 
     public static void main(String args[]) {
           S();
     }
 }
 

These are the stack frames:

 TRACEPT[----,LOCATION[METHOD[P,()V,SimpleE,dynamic], LINE=25, BC=0]]
    FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=3]
    FRAME[LOCATION[METHOD[P,()V,SimpleE,dynamic], LINE=25, BC=0], THRD=1, ID=2]
    FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=40, BC=0], THRD=1, ID=1]
    FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0]
 
 TRACEPT[----,LOCATION[METHOD[O,()V,SimpleE,dynamic], LINE=20, BC=0]]
    FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=5]
    FRAME[LOCATION[METHOD[O,()V,SimpleE,dynamic], LINE=20, BC=0], THRD=1, ID=4]
    FRAME[LOCATION[METHOD[P,()V,SimpleE,dynamic], LINE=26, BC=3], THRD=1, ID=2]
    FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=40, BC=0], THRD=1, ID=1]
    FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0]
 
 TRACEPT[----,LOCATION[METHOD[N,()V,SimpleE,dynamic], LINE=16, BC=0]]
    FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=7]
    FRAME[LOCATION[METHOD[N,()V,SimpleE,dynamic], LINE=16, BC=0], THRD=1, ID=6]
    FRAME[LOCATION[METHOD[O,()V,SimpleE,dynamic], LINE=21, BC=3], THRD=1, ID=4]
    FRAME[LOCATION[METHOD[P,()V,SimpleE,dynamic], LINE=26, BC=3], THRD=1, ID=2]
    FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=40, BC=0], THRD=1, ID=1]
    FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0]
 
 TRACEPT[----,LOCATION[METHOD[L,()V,SimpleE,dynamic], LINE=8, BC=0]]
    FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=10]
    FRAME[LOCATION[METHOD[L,()V,SimpleE,dynamic], LINE=8, BC=0], THRD=1, ID=9]
    FRAME[LOCATION[METHOD[W,()V,SimpleE,dynamic], LINE=30, BC=0], THRD=1, ID=8]
    FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=41, BC=3], THRD=1, ID=1]
    FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0]
 
 TRACEPT[----,LOCATION[METHOD[W,()V,SimpleE,dynamic], LINE=31, BC=3]]
    FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=11]
    FRAME[LOCATION[METHOD[W,()V,SimpleE,dynamic], LINE=31, BC=3], THRD=1, ID=8]
    FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=41, BC=3], THRD=1, ID=1]
    FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0]
 
 TRACEPT[----,LOCATION[METHOD[M,()V,SimpleE,dynamic], LINE=12, BC=0]]
    FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=13]
    FRAME[LOCATION[METHOD[M,()V,SimpleE,dynamic], LINE=12, BC=0], THRD=1, ID=12]
    FRAME[LOCATION[METHOD[W,()V,SimpleE,dynamic], LINE=32, BC=6], THRD=1, ID=8]
    FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=41, BC=3], THRD=1, ID=1]
    FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0]
 
 TRACEPT[----,LOCATION[METHOD[K,()V,SimpleE,dynamic], LINE=4, BC=0]]
    FRAME[LOCATION[METHOD[sm$mark,()V,sandmark.watermark.ct.trace.Annotator,dynamic], LINE=45, BC=4], THRD=1, ID=16]
    FRAME[LOCATION[METHOD[K,()V,SimpleE,dynamic], LINE=4, BC=0], THRD=1, ID=15]
    FRAME[LOCATION[METHOD[R,()V,SimpleE,dynamic], LINE=36, BC=0], THRD=1, ID=14]
    FRAME[LOCATION[METHOD[S,()V,SimpleE,dynamic], LINE=42, BC=6], THRD=1, ID=1]
    FRAME[LOCATION[METHOD[main,([Ljava/lang/String;)V,SimpleE,dynamic], LINE=46, BC=0], THRD=1, ID=0]
 


main

public static void main(java.lang.String[] args)
Build the dynamic call-graph for methods test1, test2, test3, test4. Call by
   java -classpath .:../smextern3/BCEL.jar:../smextern/bloat-1.0.jar \
                sandmark.watermark.ct.trace.callforest.Test
 


SandMark version 3.0

Wed Jan 29 10:30:05 MST 2003