Adding the old tracker variable for debugging/testing purposes.
[jpf-core.git] / src / main / gov / nasa / jpf / vm / HandlerContext.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  * utility wrapper for exception handlers that /would/ handle
23  * a given exception type
24  * 
25  * <2do> This should be a class hierarchy to properly distinguish between
26  * ordinary catch handlers and UncaughtHandler objects, but so far
27  * this isn't worth it
28  */
29 public class HandlerContext {
30   public enum UncaughtHandlerType { INSTANCE, GROUP, GLOBAL } 
31   
32   ThreadInfo ti;
33   ClassInfo ciException;
34   
35   StackFrame frame;
36   ExceptionHandler handler;
37   // - or -
38   int uncaughtHandlerRef;
39   UncaughtHandlerType uncaughtHandlerType;
40
41   HandlerContext (ThreadInfo ti, ClassInfo ciException, StackFrame frame, ExceptionHandler handler) {
42     this.ti = ti;
43     this.ciException = ciException;
44     this.frame = frame;
45     this.handler = handler;
46   }
47   
48   HandlerContext (ThreadInfo ti, ClassInfo ciException, UncaughtHandlerType uncaughtHandlerType, int uncaughtHandlerRef){
49     this.ti = ti;
50     this.ciException = ciException;
51     this.uncaughtHandlerType = uncaughtHandlerType;
52     this.uncaughtHandlerRef = uncaughtHandlerRef;
53   }
54
55   public ThreadInfo getThreadInfo(){
56     return ti;
57   }
58   
59   public StackFrame getFrame () {
60     return frame;
61   }
62
63   public ExceptionHandler getHandler () {
64     return handler;
65   }
66
67   public boolean isUncaughtHandler(){
68     return uncaughtHandlerType != null;
69   }
70   
71   public UncaughtHandlerType getUncaughtHandlerType(){
72     return uncaughtHandlerType;
73   }
74   
75   public int getUncaughtHandlerRef(){
76     return uncaughtHandlerRef;
77   }
78 }