VM_Magic.setMemoryWord(rtn.add(offset), VM_Word.fromInt(value));
VM_Magic.setMemoryInt(rtn.add(offset), value);
  public static final VM_Address getBytes (String str)     throws VM_PragmaLogicallyUninterruptible {    if (str == null)       return VM_Address.zero();    if (DEBUG_) {      Log.write("getBytes: ");      Log.write(str);      Log.write("->");    }    // Grab some memory sufficient to hold the null terminated string,    // rounded up to an integral number of ints.    int len;    swLock();       len = str.length();     swUnlock();    int size = ((len >>> LOG_BYTES_IN_WORD) + 1) << LOG_BYTES_IN_WORD;    VM_Address rtn = malloc(size);       // Write the string into it, one word at a time, being carefull about endianism    for (int w = 0; w <= (len >>> LOG_BYTES_IN_WORD); w++)  {      int value = 0;      int offset = w << LOG_BYTES_IN_WORD;      int shift = 0;      for (int b = 0; b < BYTES_IN_WORD; b++) {	byte byteVal = 0;	if (offset + b < len) {	  swLock(); 	    byteVal = (byte) str.charAt(offset + b);    // dodgy conversion!	  swUnlock();	}	//-#if RVM_FOR_IA32	// Endianism matters	value = (byteVal << shift) | value;	//-#else	value = (value << shift) | byteVal; // not tested	//-#endif	shift += BITS_IN_BYTE;      }      VM_Magic.setMemoryWord(rtn.add(offset), VM_Word.fromInt(value));    }    if (DEBUG_) {      VM_SysCall.sysWriteBytes(2/*SysTraceFd*/, rtn, size);      Log.write("\n");    }    return rtn;  }