VM_ExceptionHandlerMap(DataInputStream input, VM_Class declaringClass, int n) throws IOException { startPCs       = new int[n]; endPCs         = new int[n]; handlerPCs     = new int[n]; exceptionTypes = new VM_TypeReference[n]; for (int i = 0; i < n; ++i) { startPCs[i]       = input.readUnsignedShort(); endPCs[i]         = input.readUnsignedShort(); handlerPCs[i]     = input.readUnsignedShort(); VM_TypeReference et = declaringClass.getTypeRef(input.readUnsignedShort()); if (et == null) {   exceptionTypes[i] = VM_TypeReference.JavaLangThrowable; } else { exceptionTypes[i] = et; } }
private VM_ExceptionHandlerMap(int startPCs[], int endPCs[], int handlerPCs[], VM_TypeReference exceptionTypes[]) { this.startPCs   = startPCs; this.endPCs     = endPCs; this.handlerPCs = handlerPCs; this.exceptionTypes = exceptionTypes;
  VM_ExceptionHandlerMap(DataInputStream input,                          VM_Class declaringClass,                          int n) throws IOException {    startPCs       = new int[n];    endPCs         = new int[n];    handlerPCs     = new int[n];    exceptionTypes = new VM_TypeReference[n];    for (int i = 0; i < n; ++i) {      startPCs[i]       = input.readUnsignedShort();      endPCs[i]         = input.readUnsignedShort();      handlerPCs[i]     = input.readUnsignedShort();      VM_TypeReference et = declaringClass.getTypeRef(input.readUnsignedShort()); // possibly null      if (et == null) {        // A finally block...set to java.lang.Throwable to avoid        // needing to think about this case anywhere else in the VM.        exceptionTypes[i] = VM_TypeReference.JavaLangThrowable;      } else {        exceptionTypes[i] = et;      }    }  }