Initial import
[jpf-core.git] / src / peers / gov / nasa / jpf / vm / AtomicFieldUpdater.java
1 /*
2  * Copyright (C) 2014, United States Government, as represented by the
3  * Administrator of the National Aeronautics and Space Administration.
4  * All rights reserved.
5  *
6  * The Java Pathfinder core (jpf-core) platform is licensed under the
7  * Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  * 
10  *        http://www.apache.org/licenses/LICENSE-2.0. 
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and 
16  * limitations under the License.
17  */
18
19 package gov.nasa.jpf.vm;
20
21 /**
22  * base class for atomic field updaters
23  */
24 public class AtomicFieldUpdater extends NativePeer {
25   
26   
27   protected FieldInfo getFieldInfo (ElementInfo eiUpdater, ElementInfo eiTarget){
28     int fidx = eiUpdater.getIntField("fieldId");
29     return eiTarget.getClassInfo().getInstanceField(fidx);
30   }
31   
32   /**
33    * note - we are not interested in sharedness/interleaving of the AtomicUpdater object 
34    * but in the object that is accessed by the updater
35    */
36   protected boolean reschedulesAccess (ThreadInfo ti, ElementInfo ei, FieldInfo fi){
37     Scheduler scheduler = ti.getScheduler();
38     Instruction insn = ti.getPC();
39     
40     if (scheduler.canHaveSharedObjectCG( ti, insn, ei, fi)){
41       ei = scheduler.updateObjectSharedness( ti, ei, fi);
42       return scheduler.setsSharedObjectCG( ti, insn, ei, fi);
43     }
44     
45     return false;
46   }
47
48 }