if (VM.VerifyAssertions) VM.assert(VM.NOT_REACHED);
if (VM.VerifyAssertions) VM._assert(VM.NOT_REACHED);
  private static void transferExecutionToNewStack(int[] newStack,                                                   VM_Registers                                                   exceptionRegisters) throws VM_PragmaNoInline {    // prevent opt compiler from inlining a method that contains a magic    // (returnToNewStack) that it does not implement.    VM_Thread myThread = getCurrentThread();    int[]     myStack  = myThread.stack;    // initialize new stack with live portion of stack we're     // currently running on    //    //  lo-mem                                        hi-mem    //                           |<---myDepth----|    //                +----------+---------------+    //                |   empty  |     live      |    //                +----------+---------------+    //                 ^myStack   ^myFP           ^myTop    //    //       +-------------------+---------------+    //       |       empty       |     live      |    //       +-------------------+---------------+    //        ^newStack           ^newFP          ^newTop    //    VM_Address myTop   = VM_Magic.objectAsAddress(myStack).add(myStack.length  << 2);    VM_Address newTop  = VM_Magic.objectAsAddress(newStack).add(newStack.length << 2);    VM_Address myFP    = VM_Magic.getFramePointer();    int myDepth        = myTop.diff(myFP);    VM_Address newFP   = newTop.sub(myDepth);    // The frame pointer addresses the top of the frame on powerpc and     // the bottom    // on intel.  if we copy the stack up to the current     // frame pointer in here, the    // copy will miss the header of the intel frame.  Thus we make another     // call    // to force the copy.  A more explicit way would be to up to the     // frame pointer    // and the header for intel.    int delta = copyStack(newStack);    // fix up registers and save areas so they refer     // to "newStack" rather than "myStack"    //    if (exceptionRegisters != null)      adjustRegisters(exceptionRegisters, delta);    adjustStack(newStack, newFP, delta);    // install new stack    //    myThread.stack      = newStack;    myThread.stackLimit = VM_Magic.objectAsAddress(newStack).add(STACK_SIZE_GUARD);    VM_Processor.getCurrentProcessor().activeThreadStackLimit = myThread.stackLimit;        // return to caller, resuming execution on new stack     // (original stack now abandoned)    ////-#if RVM_FOR_POWERPC    VM_Magic.returnToNewStack(VM_Magic.getCallerFramePointer(newFP));//-#endif//-#if RVM_FOR_IA32    VM_Magic.returnToNewStack(newFP);//-#endif    if (VM.VerifyAssertions) VM.assert(VM.NOT_REACHED);  }  /**   * This (suspended) thread's stack has been moved.   * Fixup register and memory references to reflect its new position.   * @param delta displacement to be applied to all interior references   */   public final void fixupMovedStack(int delta) {    if (traceAdjustments) VM.sysWrite("VM_Thread: fixupMovedStack\n");    if (!contextRegisters.getInnermostFramePointer().isZero())       adjustRegisters(contextRegisters, delta);    if ((hardwareExceptionRegisters.inuse) &&	(hardwareExceptionRegisters.getInnermostFramePointer().NE(VM_Address.zero()))) {      adjustRegisters(hardwareExceptionRegisters, delta);    }    if (!contextRegisters.getInnermostFramePointer().isZero())      adjustStack(stack, contextRegisters.getInnermostFramePointer(), delta);    stackLimit = stackLimit.add(delta);  }