VM_Barriers.compilePutfieldBarrierImm(this, fieldOffset, fieldRef.getId());
VM_Barriers.compilePutfieldBarrierImm(this, fieldOff, fieldRef.getId());
  protected final void emit_resolved_putfield(VM_FieldReference fieldRef) {    int fieldOffset = fieldRef.peekResolvedField().getOffset();    if (MM_Interface.NEEDS_WRITE_BARRIER && !fieldRef.getFieldContentsType().isPrimitiveType()) {      VM_Barriers.compilePutfieldBarrierImm(this, fieldOffset, fieldRef.getId());    }    if (fieldRef.getSize() == BYTES_IN_INT) { // field is one word        popInt(T0);        // T0 = value        popAddr(T1);       // T1 = object reference        if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);         asm.emitSTW(T0, fieldOffset, T1);    } else { // field is two words (double or long)      if (VM.VerifyAssertions) VM._assert(fieldRef.getSize() == BYTES_IN_LONG);        if (VM.BuildFor64Addr){          if (fieldRef.getNumberOfStackSlots() == 1){    //address only 1 stackslot!!!            popAddr(T0);                // T0 = address value            popAddr(T1);                // T1 = object reference            if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);                      asm.emitSTD(T0, fieldOffset, T1);            return;          }        }        popDouble(F0);     // F0 = doubleword value        popAddr(T1);       // T1 = object reference        if (VM.ExplicitlyGuardLowMemory) asm.emitNullCheck(T1);         asm.emitSTFD(F0, fieldOffset, T1);    }  }