01: //
02: // Copyright (C) 2005 United States Government as represented by the
03: // Administrator of the National Aeronautics and Space Administration
04: // (NASA). All Rights Reserved.
05: //
06: // This software is distributed under the NASA Open Source Agreement
07: // (NOSA), version 1.3. The NOSA has been approved by the Open Source
08: // Initiative. See the file NOSA-1.3-JPF at the top of the distribution
09: // 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;
20:
21: /**
22: * <2do> pcm - another superfluous type, we should reduce this to Fields. Last
23: * place the polymorphism is used (but after an 'instanceof') is FieldRaceInfo.
24: * As soon as we cleaned up the race detection, scrub this class
25: *
26: * Represents the fields of an object or class. Contains the values of the
27: * fields, not their descriptors. Descriptors are represented by
28: * gov.nasa.jpf.jvm.FieldInfo objects, which are stored in the
29: * ClassInfo structure.
30: * @see gov.nasa.jpf.jvm.FieldInfo
31: */
32: public class DynamicFields extends Fields {
33:
34: /**
35: * Constructor
36: */
37: public DynamicFields(String t, ClassInfo ci) {
38: super (t, ci, ci.getInstanceDataSize());
39: ci.initializeInstanceData(this );
40: }
41:
42: // the FieldInfo accessors are just here to hide the Dynamic/StaticFieldInfo
43: // anomaly, remove once we have this solved
44: public FieldInfo getFieldInfo(String clsBase, String fname) {
45: return ci.getInstanceField(clsBase, fname);
46: }
47:
48: public int getNumberOfFields() {
49: return ci.getNumberOfInstanceFields();
50: }
51:
52: public FieldInfo getFieldInfo(int fieldIndex) {
53: return ci.getInstanceField(fieldIndex);
54: }
55:
56: public String getLogChar() {
57: return "#";
58: }
59:
60: public boolean equals(Object o) {
61: if (o == null) {
62: return false;
63: }
64:
65: if (!(o instanceof DynamicFields)) {
66: return false;
67: }
68:
69: return super.equals(o);
70: }
71: }
|