/** * Get return address for a frame in a specific thread * * @param fp its frame pointer * @param thread the thread whose stack is being examined */ @Uninterruptible public static Address getReturnAddress(Address fp, RVMThread thread) { Address ip = getReturnAddressLocation(fp).loadAddress(); if (RVMThread.isTrampolineIP(ip)) return thread.getTrampolineHijackedReturnAddress(); else return ip; }
/** * Get return address for a frame in a case where the frame is known not to be a trampoline frame. * * @param fp its frame pointer */ @Uninterruptible public static Address getReturnAddressUnchecked(Address fp) { Address ip = getReturnAddressLocation(fp).loadAddress(); if (VM.VerifyAssertions) VM._assert(!RVMThread.isTrampolineIP(ip)); return ip; }