int offset = compiledMethod.getUnsignedExceptionOffset(); if (offset != 0) {
Offset offset = Offset.fromIntSignExtend(compiledMethod.getUnsignedExceptionOffset()); if (!offset.isZero()) {
  public void deliverException(VM_CompiledMethod cm,                         Address catchBlockInstructionAddress,                         Throwable exceptionObject,                         VM_Registers registers) {    // store exception object for later retrieval by catch block    VM_OptCompiledMethod compiledMethod = (VM_OptCompiledMethod)cm;    int offset = compiledMethod.getUnsignedExceptionOffset();    if (offset != 0) {      // only put the exception object in the stackframe if the catch block is expecting it.      // (if the method hasn't allocated a stack slot for caught exceptions, then we can safely      //  drop the exceptionObject on the floor).      Address fp = registers.getInnermostFramePointer();      VM_Magic.setObjectAtOffset(VM_Magic.addressAsObject(fp), offset, exceptionObject);    }    // set address at which to resume executing frame    registers.ip = catchBlockInstructionAddress;    VM.enableGC(); // disabled right before VM_Runtime.deliverException was called    if (VM.VerifyAssertions) VM._assert(registers.inuse == true);    registers.inuse = false;    // "branches" to catchBlockInstructionAddress    VM_Magic.restoreHardwareExceptionState(registers);    if (VM.VerifyAssertions) VM._assert(NOT_REACHED);  }