1 package gov.nasa.jpf.search.heuristic; 20 21 import gov.nasa.jpf.Config; 22 import gov.nasa.jpf.VM; 23 import gov.nasa.jpf.jvm.TrailInfo; 24 25 26 29 public class GlobalSwitchThread implements Heuristic { 30 private int[] threads; 31 VM vm; 32 33 public GlobalSwitchThread (Config config, HeuristicSearch hSearch) { 34 int threadHistorySize = config.getInt("search.heuristic.thread_history_size", 10); 35 36 vm = hSearch.getVM(); 37 threads = new int[threadHistorySize]; 38 39 for (int i = 0; i < threads.length; i++) { 40 threads[i] = -1; 41 } 42 } 43 44 public int heuristicValue () { 45 int aliveThreads = vm.getAliveThreadCount(); 46 47 int lastRun = ((TrailInfo) vm.getLastTransition()).getThread(); 48 int h_value = 0; 49 50 if (aliveThreads > 1) { 51 for (int i = 0; i < threads.length; i++) { 52 if (lastRun == threads[i]) { 53 h_value += ((threads.length - i) * aliveThreads); 54 } 55 } 56 } 57 58 int temp0 = threads[0]; 59 int temp1; 60 threads[0] = lastRun; 61 62 for (int i = 1; i < threads.length; i++) { 63 temp1 = threads[i]; 64 threads[i] = temp0; 65 temp0 = temp1; 66 } 67 68 return h_value; 69 } 70 71 public void processParent () { 72 } 73 } 74 | Popular Tags |