testBB.appendInstruction(Load.create(INT_LOAD, offset, offsetTable, IC(dictId << LOG_BYTES_IN_INT),
testBB.appendInstruction(Load.create(INT_LOAD, offset.copyRO(), offsetTable, AC(Offset.fromIntZeroExtend(dictId << LOG_BYTES_IN_INT)),
  private static OPT_Instruction resolveMember(OPT_Instruction s, OPT_IR ir) {    OPT_Operand memberOp = Unary.getClearVal(s);    OPT_RegisterOperand offset = Unary.getClearResult(s);    int dictId;    if (memberOp instanceof OPT_LocationOperand) {      dictId = ((OPT_LocationOperand)memberOp).getFieldRef().getId();    } else {      dictId = ((OPT_MethodOperand)memberOp).getMemberRef().getId();    }              OPT_BranchProfileOperand bp = OPT_BranchProfileOperand.never();    OPT_BasicBlock predBB = s.getBasicBlock();      OPT_BasicBlock succBB = predBB.splitNodeAt(s.getPrev(), ir);     OPT_BasicBlock testBB = predBB.createSubBlock(s.bcIndex, ir, 1f - bp.takenProbability);    OPT_BasicBlock resolveBB = predBB.createSubBlock(s.bcIndex, ir, bp.takenProbability);    s.remove();    // Get the offset from the appropriate VM_ClassLoader array     // and check to see if it is valid    OPT_RegisterOperand offsetTable =       getStatic(testBB.lastInstruction(), ir, VM_Entrypoints.memberOffsetsField);    testBB.appendInstruction(Load.create(INT_LOAD, offset, offsetTable,                                         IC(dictId << LOG_BYTES_IN_INT),                                          new OPT_LocationOperand(VM_TypeReference.Int),                                          TG()));    testBB.appendInstruction(IfCmp.create(INT_IFCMP, null,                                           offset.copy(),                                          IC(NEEDS_DYNAMIC_LINK),                                          OPT_ConditionOperand.EQUAL(),                                           resolveBB.makeJumpTarget(),                                          bp));    // Handle the offset being invalid    resolveBB.appendInstruction(CacheOp.mutate(s, RESOLVE, memberOp));    resolveBB.appendInstruction(testBB.makeGOTO());     // Put together the CFG links & code order    predBB.insertOut(testBB);    ir.cfg.linkInCodeOrder(predBB, testBB);    testBB.insertOut(succBB);    testBB.insertOut(resolveBB);    ir.cfg.linkInCodeOrder(testBB, succBB);    resolveBB.insertOut(testBB);              // backedge    ir.cfg.addLastInCodeOrder(resolveBB);  // stick resolution code in outer space.    return testBB.lastInstruction();  }