Mercurial > hg > Members > kono > jpf-core
view src/main/gov/nasa/jpf/vm/ExceptionHandler.java @ 13:9d0c3f9df6e0
replaced ThreadInfo.yield() (which was bypassing SyncPolicy) with SyncPolicy.setsRescheduleCG(). The current use is only for the corner case where the last transition in the last non-daemon triggers a defect in a still runnable daemon, which we want to detect before the daemon is shut down.
Added ChoiceGenerator.set/getStateId(), which is set on the nextCg once we broke a transition and performed state matching. This can be used to determine the states in the current path without having to maintain this as a separate structure that just mirrors the CG path. There is always a 1:1 relationship between the state that caused the CG and the respective CG instance.
author | Peter Mehlitz <Peter.C.Mehlitz@nasa.gov> |
---|---|
date | Fri, 13 Mar 2015 14:07:43 -0700 |
parents | 61d41facf527 |
children |
line wrap: on
line source
/* * Copyright (C) 2014, United States Government, as represented by the * Administrator of the National Aeronautics and Space Administration. * All rights reserved. * * The Java Pathfinder core (jpf-core) platform is licensed under the * Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0. * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package gov.nasa.jpf.vm; /** * Stores the information about an exception handler. */ public class ExceptionHandler { /** * Name of the exception caught. If it is 'null', this means this is an 'any' handler */ private String name; /** * The first instruction belonging to this handler. */ private int begin; /** * The last instruction belonging to this handler. */ private int end; /** * The offset of the handler. */ private int handler; /** * Creates a new exception handler. */ public ExceptionHandler (String n, int b, int e, int h) { name = n; begin = b; end = e; handler = h; } /** * Returns the first instruction in the block. */ public int getBegin () { return begin; } /** * Returns the last instruction in the block. */ public int getEnd () { return end; } /** * Returns the instruction location for the handler. */ public int getHandler () { return handler; } /** * Returns the name of the exception caught. */ public String getName () { return name; } @Override public String toString() { return "Handler [name="+name+",from="+begin+",to="+end+",target="+handler+"]"; } }