VM.assert(dest != 0); VM.assert(VM_AllocatorHeader.GC_FORWARDING_MASK == 0x00000003);
VM._assert(dest != 0); VM._assert(VM_AllocatorHeader.GC_FORWARDING_MASK == 0x00000003);
  public static void baselineEmitLoadTIB(VM_Assembler asm, int dest,                                          int object) {    if (VM.VerifyAssertions) VM.assert(TIB_SHIFT == 2);    int ME = 31 - TIB_SHIFT;    int MB = HASH_STATE_BITS;    if (VM_Collector.MOVES_OBJECTS && VM.writingBootImage) {      if (VM.VerifyAssertions) {	VM.assert(dest != 0);	VM.assert(VM_AllocatorHeader.GC_FORWARDING_MASK == 0x00000003);      }      asm.emitL   (dest, TIB_OFFSET, object);      asm.emitANDI(0, dest, VM_AllocatorHeader.GC_FORWARDING_MASK);      asm.emitBEQ (5);  // if dest & FORWARDING_MASK == 0; then dest has a valid tib index      asm.emitCMPI(0, VM_AllocatorHeader.GC_FORWARDED);      asm.emitBNE (3);       // It really has been forwarded; chase the forwarding pointer and get the tib word from there.      asm.emitRLWINM(dest, dest, 0, 0, 29);    // mask out bottom two bits of forwarding pointer      asm.emitL     (dest, TIB_OFFSET, dest); // get TIB word from forwarded object      // The following clears the high and low-order bits. See p.119 of PowerPC book      // Because TIB_SHIFT is 2 the masked value is a JTOC offset.      asm.emitRLWINM(dest, dest, 0, MB, ME);      asm.emitLX(dest,JTOC,dest);    } else {      asm.emitL(dest, TIB_OFFSET, object);      // The following clears the high and low-order bits. See p.119 of PowerPC book      // Because TIB_SHIFT is 2 the masked value is a JTOC offset.      asm.emitRLWINM(dest, dest, 0, MB, ME);      asm.emitLX(dest,JTOC,dest);    }  }