KickJava   Java API By Example, From Geeks To Geeks.

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


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 /**
22  * class encapsulating the lock protection detection for field access
23  * instructions. Used by on-the-fly partial order reduction in FieldInstruction
24  * to determine if a GET/PUT_FIELD/STATIC insn has to be treated as a
25  * boundary step (terminates a transition). If the field access is always
26  * protected by a lock, only the corresponding sync (INVOKExx or MONITORENTER)
27  * are boundary steps, thus the number of states can be significantly reduced
28  */

29 public abstract class FieldLockInfo implements Cloneable JavaDoc {
30   static protected FieldLockInfo empty = new EmptyFieldLockInfo();
31   
32   public abstract FieldLockInfo checkProtection (ElementInfo ei, FieldInfo fi, ThreadInfo ti);
33   public abstract boolean isProtected ();
34   
35   /*
36    * we need this for faster instantiation. Make sure it gets overridden in
37    * case there is a need for per-instance parameterization
38    */

39   public Object JavaDoc clone () throws CloneNotSupportedException JavaDoc {
40     return super.clone();
41   }
42 }
43
44 /**
45  * FieldLockSet implementation for fields that are terminally considered to be unprotected
46  */

47 class EmptyFieldLockInfo extends FieldLockInfo {
48   public FieldLockInfo checkProtection (ElementInfo ei, FieldInfo fi, ThreadInfo ti) {
49     return this;
50   }
51     
52   public boolean isProtected () {
53     return false;
54   }
55 }
56
57
Popular Tags