KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gov > nasa > jpf > jvm > bytecode > LocalVariableInstruction


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
package gov.nasa.jpf.jvm.bytecode;
20
21 import org.apache.bcel.classfile.ConstantPool;
22
23 /**
24  * class abstracting instructions that access local variables, to keep
25  * track of slot/varname mapping
26  */

27 public abstract class LocalVariableInstruction extends Instruction
28   implements VariableAccessor {
29   int index;
30   String JavaDoc varId;
31   
32   public void setPeer (org.apache.bcel.generic.Instruction i, ConstantPool cp) {
33     index = ((org.apache.bcel.generic.LocalVariableInstruction) i).getIndex();
34   }
35   
36   public int getLocalVariableIndex() {
37     return index;
38   }
39   
40   public String JavaDoc getLocalVariableName () {
41     String JavaDoc[] names = mi.getLocalVariableNames();
42     
43     if (names != null) {
44       return names[index];
45     } else {
46       return "?";
47     }
48   }
49   
50   public String JavaDoc getLocalVariableType () {
51     String JavaDoc[] types = mi.getLocalVariableTypes();
52     
53     if (types != null) {
54       return types[index];
55     } else {
56       return "?";
57     }
58   }
59   
60   public String JavaDoc getVariableId () {
61     if (varId == null) {
62       varId = mi.getClassInfo().getName() + '.' + mi.getUniqueName() + '.' + getLocalVariableName();
63     }
64     
65     return varId;
66   }
67 }
68
69
70
Popular Tags