if (VM.VerifyAssertions) VM.assert(fieldRef.getSize() == 8);
if (VM.VerifyAssertions) VM._assert(fieldRef.getSize() == 8);
  protected final void emit_resolved_putstatic(VM_Field fieldRef) {    int fieldOffset = fieldRef.getOffset();    if (VM_Collector.NEEDS_WRITE_BARRIER && !fieldRef.getType().isPrimitiveType()) {      VM_Barriers.compilePutstaticBarrier(asm, spSaveAreaOffset, fieldOffset);    }    if (!(VM.BuildForStrongVolatileSemantics && fieldRef.isVolatile())) { // normal case      if (fieldRef.getSize() == 4) { // field is one word	asm.emitL    (T0, 0, SP);	asm.emitCAL  (SP, 4, SP);	if (VM.BuildForConcurrentGC && ! fieldRef.getType().isPrimitiveType()) {	  //-#if RVM_WITH_CONCURRENT_GC	  VM_RCBarriers.compilePutstaticBarrier(asm, spSaveAreaOffset, fieldOffset, method, fieldRef);	  //-#endif	} else {	  asm.emitSTtoc(T0, fieldOffset, T1);	}      } else { // field is two words (double or long)	if (VM.VerifyAssertions) VM.assert(fieldRef.getSize() == 8);	asm.emitLFD    (F0, 0, SP );	asm.emitCAL    (SP, 8, SP);	asm.emitSTFDtoc(F0, fieldOffset, T0);      }    } else {		// strong volatiles case      if (fieldRef.getSize() == 4) { // field is one word	asm.emitL     (T0, 0, SP);	asm.emitCAL   (SP, 4, SP);	if (VM.BuildForConcurrentGC && ! fieldRef.getType().isPrimitiveType()) {	  //-#if RVM_WITH_CONCURRENT_GC 	  VM_RCBarriers.compilePutstaticBarrier(asm, spSaveAreaOffset, fieldOffset, method, fieldRef);	  //-#endif	} else { // see Appendix E of PowerPC Microprocessor Family: The Programming Environments	  asm.emitLVAL  (T1, fieldOffset); // T1 = fieldOffset	  int label = asm.getMachineCodeIndex();	  asm.emitLWARX (S0, JTOC, T1);    // S0 = old value	  asm.emitSTWCXr(T0, JTOC, T1);    // atomically replace with new value (T0)	  asm.emitBC    (NE, label);       // retry, if reservation lost	}	// asm.emitSYNC(); // to make putstatic of a volatile field a write barrier uncomment this line (Note this is untested and the Opt compiler must also behave.))      } else { // volatile field is two words (double or long)	if (VM.VerifyAssertions) VM.assert(fieldRef.getSize() == 8);	asm.emitLtoc   (T0, VM_Entrypoints.doublewordVolatileMutexField.getOffset());	VM_ObjectModel.baselineEmitLoadTIB(asm, T1, T0);	asm.emitL      (S0, VM_Entrypoints.processorLockMethod.getOffset(), T1);	asm.emitMTLR   (S0);	asm.emitCall   (spSaveAreaOffset);	asm.emitLFD    (F0, 0, SP );	asm.emitCAL    (SP, 8, SP);	asm.emitSTFDtoc(F0, fieldOffset, T0);	asm.emitLtoc   (T0, VM_Entrypoints.doublewordVolatileMutexField.getOffset());	VM_ObjectModel.baselineEmitLoadTIB(asm, T1, T0);	asm.emitL      (S0, VM_Entrypoints.processorUnlockMethod.getOffset(), T1);	asm.emitMTLR   (S0);	asm.emitCall   (spSaveAreaOffset);      }    }  }