asm.emitLAddr(S0, VM_Entrypoints.yieldpointFromPrologueMethod.getOffsetAsInt(), JTOC);
asm.emitLAddrOffset(S0, JTOC, VM_Entrypoints.yieldpointFromPrologueMethod.getOffset());
  private void genThreadSwitchTest (int whereFrom) {    if (isInterruptible) {      VM_ForwardReference fr;      // yield if takeYieldpoint is non-zero.      asm.emitLInt(S0, VM_Entrypoints.takeYieldpointField.getOffsetAsInt(), PROCESSOR_REGISTER);      asm.emitCMPI(S0, 0);       if (whereFrom == VM_Thread.PROLOGUE) {        // Take yieldpoint if yieldpoint flag is non-zero (either 1 or -1)        fr = asm.emitForwardBC(EQ);        asm.emitLAddr(S0, VM_Entrypoints.yieldpointFromPrologueMethod.getOffsetAsInt(), JTOC);      } else if (whereFrom == VM_Thread.BACKEDGE) {        // Take yieldpoint if yieldpoint flag is >0        fr = asm.emitForwardBC(LE);        asm.emitLAddr(S0, VM_Entrypoints.yieldpointFromBackedgeMethod.getOffsetAsInt(), JTOC);      } else { // EPILOGUE        // Take yieldpoint if yieldpoint flag is non-zero (either 1 or -1)        fr = asm.emitForwardBC(EQ);        asm.emitLAddr(S0, VM_Entrypoints.yieldpointFromEpilogueMethod.getOffsetAsInt(), JTOC);      }      asm.emitMTCTR(S0);      asm.emitBCCTRL();      fr.resolve(asm);      //-#if RVM_WITH_ADAPTIVE_SYSTEM      if (options.INVOCATION_COUNTERS) {        int id = compiledMethod.getId();        com.ibm.JikesRVM.adaptive.VM_InvocationCounts.allocateCounter(id);        asm.emitLAddrToc (T0, VM_Entrypoints.invocationCountsField.getOffset());        asm.emitLVAL(T1, compiledMethod.getId() << LOG_BYTES_IN_INT);        asm.emitLIntX   (T2, T0, T1);                               asm.emitADDICr  (T2, T2, -1);        asm.emitSTWX  (T2, T0, T1);        VM_ForwardReference fr2 = asm.emitForwardBC(asm.GT);        asm.emitLAddrToc (T0, VM_Entrypoints.invocationCounterTrippedMethod.getOffset());        asm.emitMTCTR(T0);        asm.emitLVAL(T0, id);        asm.emitBCCTRL();        fr2.resolve(asm);      }      //-#endif    }  }