KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gov > nasa > jpf > embedded > TestVMListener


1 //
2
// Copyright (C) 2005 United States Government as represented by the
3
// Administrator of the National Aeronautics and Space Administration
4
// (NASA). All Rights Reserved.
5
//
6
// This software is distributed under the NASA Open Source Agreement
7
// (NOSA), version 1.3. The NOSA has been approved by the Open Source
8
// Initiative. See the file NOSA-1.3-JPF at the top of the distribution
9
// directory tree for the complete NOSA document.
10
//
11
// THE SUBJECT SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY
12
// KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT
13
// LIMITED TO, ANY WARRANTY THAT THE SUBJECT SOFTWARE WILL CONFORM TO
14
// SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR
15
// A PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT
16
// THE SUBJECT SOFTWARE WILL BE ERROR FREE, OR ANY WARRANTY THAT
17
// DOCUMENTATION, IF PROVIDED, WILL CONFORM TO THE SUBJECT SOFTWARE.
18
//
19

20 package gov.nasa.jpf.embedded;
21
22 import gov.nasa.jpf.Config;
23 import gov.nasa.jpf.VMListener;
24 import gov.nasa.jpf.VM;
25 import gov.nasa.jpf.JPF;
26 import gov.nasa.jpf.jvm.JVM;
27 import gov.nasa.jpf.jvm.ThreadInfo;
28 import gov.nasa.jpf.jvm.ElementInfo;
29
30
31 /**
32  * TestVMListener - unit test of the VMListener interface
33  */

34 public class TestVMListener implements VMListener {
35     
36   /**
37    * VM has executed next instruction
38    * (can be used to analyze branches, monitor PUTFIELD / GETFIELD and
39    * INVOKExx / RETURN instructions)
40    */

41   public void instructionExecuted(VM vm) {
42     //JVM jvm = (JVM) vm;
43
//ThreadInfo ti = jvm.getLastThreadInfo();
44
//Instruction insn = jvm.getLastInstruction();
45
//System.out.println("Instruction executed: " + ti.getIndex() + " : " + insn);
46
}
47   
48   /**
49    * new class was loaded
50    */

51   public void classLoaded(VM vm) {
52     // TODO
53
}
54   
55   /**
56    * exception was thrown
57    */

58   public void exceptionThrown(VM vm) {
59     // TODO
60
}
61   
62   /**
63    * new object was created
64    */

65   public void objectCreated(VM vm) {
66     JVM jvm = (JVM) vm;
67     ThreadInfo ti = jvm.getLastThreadInfo();
68     ElementInfo ei = jvm.getLastElementInfo();
69     System.out.println("objectCreated: " + ti.getIndex() + ", " +
70                       ei.getClassInfo().getName() + " = " + ei.getIndex());
71   }
72   
73   /**
74    * object was garbage collected (after potential finalization)
75    */

76   public void objectReleased(VM vm) {
77     JVM jvm = (JVM) vm;
78     ElementInfo ei = jvm.getLastElementInfo();
79     System.out.println("objectReleased: " + ei.getClassInfo().getName() + " = " + ei.getIndex());
80   }
81
82   public void gcBegin(VM vm) {
83     JVM jvm = (JVM)vm;
84     System.out.println("gcBegin");
85   }
86   
87   public void gcEnd(VM vm) {
88     JVM jvm = (JVM)vm;
89     System.out.println("gcEnd");
90   }
91   
92   /**
93    * new Thread entered run() method
94    */

95   public void threadStarted(VM vm) {
96     JVM jvm = (JVM) vm;
97     ThreadInfo ti = jvm.getLastThreadInfo();
98     System.out.println("threadStarted: " + ti.getIndex());
99   }
100
101   /**
102    * Thread exited run() method
103    */

104   public void threadTerminated(VM vm) {
105     JVM jvm = (JVM) vm;
106     ThreadInfo ti = jvm.getLastThreadInfo();
107     System.out.println("threadTerminated: " + ti.getIndex());
108   }
109
110   void filterArgs (String JavaDoc[] args) {
111     // we don't have any
112
}
113   
114   public static void main (String JavaDoc[] args) {
115     TestVMListener listener = new TestVMListener();
116     listener.filterArgs(args);
117     
118     Config conf = JPF.createConfig(args);
119     // here we can set our own params
120
JPF jpf = new JPF(conf);
121     jpf.getVM().addListener(listener);
122
123     System.out.println("---------------- starting JPF on class: " + args[0]);
124     jpf.run();
125     System.out.println("---------------- JPF terminated");
126   }
127
128 }
129
130
Popular Tags