VM.assert(VM_AllocatorHeader.GC_FORWARDING_MASK == 0x00000003);
VM._assert(VM_AllocatorHeader.GC_FORWARDING_MASK == 0x00000003);
  public static void lowerGET_OBJ_TIB(OPT_Instruction s, OPT_IR ir) {    OPT_RegisterOperand result = GuardedUnary.getClearResult(s);    OPT_Operand guard = GuardedUnary.getClearGuard(s);    OPT_RegisterOperand headerWord = OPT_ConvertToLowLevelIR.InsertLoadOffset(s, ir, INT_LOAD,                                                                               VM_Type.IntType, 									      GuardedUnary.getClearVal(s),									      TIB_OFFSET, guard);    if (VM_Collector.MOVES_OBJECTS && !ir.compiledMethod.getMethod().isInterruptible()) {      // Uninterruptible code may be part of the GC subsytem so it needs to robustly handle      // the TIB word holding a forwarding pointer.  If the method is interruptible, then      // it can't be executing during GC time and therefore does not need these extra instructions      if (VM.VerifyAssertions) {	VM.assert(VM_AllocatorHeader.GC_FORWARDING_MASK == 0x00000003);      }      OPT_BasicBlock prevBlock = s.getBasicBlock();      OPT_BasicBlock doneBlock = prevBlock.splitNodeAt(s.prevInstructionInCodeOrder(), ir);      OPT_BasicBlock middleBlock = doneBlock.createSubBlock(s.bcIndex, ir);      ir.cfg.linkInCodeOrder(prevBlock, middleBlock);      ir.cfg.linkInCodeOrder(middleBlock, doneBlock);      prevBlock.insertOut(middleBlock);      prevBlock.insertOut(doneBlock);      middleBlock.insertOut(doneBlock);      OPT_RegisterOperand fs = ir.regpool.makeTempInt();      prevBlock.appendInstruction(Binary.create(INT_AND, fs, headerWord.copyRO(),						new OPT_IntConstantOperand(VM_AllocatorHeader.GC_FORWARDING_MASK)));      prevBlock.appendInstruction(IfCmp.create(INT_IFCMP, null, fs.copyRO(), new OPT_IntConstantOperand(VM_AllocatorHeader.GC_FORWARDED),					       OPT_ConditionOperand.NOT_EQUAL(), doneBlock.makeJumpTarget(),					       OPT_BranchProfileOperand.likely()));      OPT_RegisterOperand fp = ir.regpool.makeTempInt();      middleBlock.appendInstruction(Binary.create(INT_AND, fp, headerWord.copyRO(), 						  new OPT_IntConstantOperand(~VM_AllocatorHeader.GC_FORWARDING_MASK)));      middleBlock.appendInstruction(Load.create(INT_LOAD, headerWord.copyRO(), fp.copyRO(), 						new OPT_IntConstantOperand(TIB_OFFSET), null, guard));    }    Binary.mutate(s, INT_AND, result, headerWord.copyRO(), new OPT_IntConstantOperand(TIB_MASK));  }  //-#endif}