KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gov > nasa > jpf > jvm > DynamicMapIndex


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;
20
21 import gov.nasa.jpf.jvm.bytecode.Instruction;
22
23
24 /**
25  * DynamicMapIndex instances are used to compute a deterministic object
26  * reference (i.e. index into DynamicArea elements[]) to achieve heap
27  * symmetry, so that the order of concurrent allocations does not result
28  * in different heap states (i.e. objects at the end have the same 'locations'
29  * in the heap).
30  */

31 public class DynamicMapIndex {
32   private Instruction pc;
33   private int threadref;
34   private int occurrence;
35
36   public DynamicMapIndex (Instruction p, int t, int o) {
37     pc = p;
38     threadref = t;
39     occurrence = o;
40   }
41
42   public Object JavaDoc clone () {
43     return new DynamicMapIndex(pc, threadref, occurrence);
44   }
45
46   public boolean equals (Object JavaDoc obj) {
47     if (obj instanceof DynamicMapIndex) {
48       DynamicMapIndex dmi = (DynamicMapIndex) obj;
49
50       return ((pc == dmi.pc) && (threadref == dmi.threadref) &&
51              (occurrence == dmi.occurrence));
52     }
53
54     return false;
55   }
56
57   public int hashCode () {
58     // <2do> pcm - that's a bit simplistic
59
return (((pc == null) ? 0 : pc.getPosition()) + threadref + occurrence);
60   }
61
62   public void next () {
63     occurrence++;
64   }
65 }
Popular Tags