Fixes default method resolution (#159)
[jpf-core.git] / src / main / gov / nasa / jpf / vm / RestorableVMState.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 package gov.nasa.jpf.vm;
19
20
21 /**
22  * NOTE - making VMStates fully restorable is currently very
23  * expensive and should only be done on a selective basis
24  */
25 public class RestorableVMState {
26   
27   /** the set of last executed insns */
28   Transition lastTransition;
29   
30   /* these are the icky parts - the history is kept as stacks inside the
31    * VM (for restoration reasons), hence we have to copy it if we want
32    * to restore a state. Since this is really expensive, it has to be done
33    * on demand, with varying degrees of information
34    */
35   Path path;
36   
37   Backtracker.RestorableState bkstate;
38   
39   VM vm;
40   
41   RestorableVMState (VM vm) {
42     this.vm = vm;
43
44     path = vm.getClonedPath();
45     bkstate = vm.getBacktracker().getRestorableState();
46     lastTransition = vm.lastTrailInfo;
47   }
48   
49   public Backtracker.RestorableState getBkState() {
50     return bkstate;
51   }
52   
53   public Transition getLastTransition () {
54     return lastTransition;
55   }
56   
57   public Path getPath () {
58     return path;
59   }
60   
61   public int getThread () {
62     return lastTransition.getThreadIndex();
63   }
64
65 }