int offset = meth.getOffset();
int offset = meth.getOffsetAsInt();
  final static OPT_BasicBlock findOrCreateYieldpointBlock(OPT_IR ir,                                                           int whereFrom) {    VM_Method meth = null;    OPT_PhysicalRegisterSet phys = ir.regpool.getPhysicalRegisterSet();    OPT_Register zero = phys.getGPR(0);        // first see if the requested block exists. If not, set up some    // state for creating the block    if (whereFrom == VM_Thread.PROLOGUE) {      if (ir.MIRInfo.prologueYieldpointBlock != null)         return ir.MIRInfo.prologueYieldpointBlock;      else         meth = VM_Entrypoints.optThreadSwitchFromPrologueMethod;    } else if (whereFrom == VM_Thread.BACKEDGE) {      if (ir.MIRInfo.backedgeYieldpointBlock != null)         return ir.MIRInfo.backedgeYieldpointBlock;      else         meth = VM_Entrypoints.optThreadSwitchFromBackedgeMethod;    } else if (whereFrom == VM_Thread.EPILOGUE) {      if (ir.MIRInfo.epilogueYieldpointBlock != null)         return ir.MIRInfo.epilogueYieldpointBlock;      else         meth = VM_Entrypoints.optThreadSwitchFromEpilogueMethod;    }    //-#if RVM_WITH_OSR    else if (whereFrom == VM_Thread.OSROPT) {      if (ir.MIRInfo.osrYieldpointBlock != null)        return ir.MIRInfo.osrYieldpointBlock;      else        meth = VM_Entrypoints.optThreadSwitchFromOsrOptMethod;    }    //-#endif     // Not found.  create new basic block holding the requested yieldpoint    // method    OPT_BasicBlock result = new OPT_BasicBlock(-1, null, ir.cfg);    ir.cfg.addLastInCodeOrder(result);    OPT_Register JTOC = phys.getJTOC();    OPT_Register CTR = phys.getCTR();    int offset = meth.getOffset();    if (OPT_Bits.fits(offset, 16)) {      result.appendInstruction(MIR_Load.create(PPC_LAddr, A(zero), A(JTOC), IC(offset)));    } else {      result.appendInstruction(MIR_Unary.create(PPC_LDIS,                                I(zero), IC(offset >>> 16)));      result.appendInstruction(MIR_Binary.create(PPC_ORI,                                I(zero), I(zero), IC(offset & 0xffff)));      result.appendInstruction(MIR_Load.create(PPC_LAddrX, A(zero), A(JTOC), I(zero)));    }    result.appendInstruction(MIR_Move.create(PPC_MTSPR, A(CTR), A(zero)));    result.appendInstruction(MIR_Branch.create(PPC_BCTR));    // cache the create block and then return it    if (whereFrom == VM_Thread.PROLOGUE)            ir.MIRInfo.prologueYieldpointBlock = result;    else if (whereFrom == VM_Thread.BACKEDGE)       ir.MIRInfo.backedgeYieldpointBlock = result;    else if (whereFrom == VM_Thread.EPILOGUE)       ir.MIRInfo.epilogueYieldpointBlock = result;    //-#if RVM_WITH_OSR    else if (whereFrom == VM_Thread.OSROPT)      ir.MIRInfo.osrYieldpointBlock = result;    //-#endif     return result;  }