if (GC_TRIGGERGC)
if (VM.verboseGC)
  getnewblockx (int ndx) {  int location;  sysLockBlock.lock();  if (first_freeblock == OUT_OF_BLOCKS) {  if (GC_TRIGGERGC)     VM_Scheduler.trace(" gc collection triggered by getnewblockx call ", "XX");  gc1();  }      VM_BlockControl alloc_block = VM_Magic.addressAsBlockControl(blocks[first_freeblock]);  int theblock = first_freeblock;  first_freeblock = alloc_block.nextblock;  sysLockBlock.unlock();  alloc_block.nextblock = OUT_OF_BLOCKS;  // this is last block in list for thissize  alloc_block.slotsize  = GC_SIZEVALUES[ndx];  int size = GC_BLOCKSIZE/GC_SIZEVALUES[ndx] ;      if (alloc_block.mark != null)  {    if (size <= alloc_block.alloc_size) {      VM_Magic.setMemoryWord(VM_Magic.objectAsAddress(alloc_block.mark) +         ARRAY_LENGTH_OFFSET, size);      return 0;    }    else {    // free the existing array space      VM.sysCall1(bootrecord.sysFreeIP,      VM_Magic.objectAsAddress(alloc_block.mark) - ARRAY_HEADER_SIZE);    }  }  // get space for alloc arrays from AIX.  int temp = (size + ARRAY_HEADER_SIZE + 3) & ~3;  if ((location = VM.sysCall1(bootrecord.sysMallocIP, temp)) == 0) {    VM.sysWrite(" In getnewblockx, call to sysMalloc returned 0 \n");    VM.sysExit(1800);  }  if (VM.VerifyAssertions) VM.assert((location & 3) == 0);// check full wd  alloc_block.mark = VM_Magic.addressAsByteArray(location    + ARRAY_HEADER_SIZE);  // GET TIB POINTER FOR byte[] from VM_Magic.addressAsBlockControl(blocks[0]).mark  int byte_array_tib = VM_Magic.getMemoryWord(VM_Magic.objectAsAddress   (VM_Magic.addressAsBlockControl(blocks[0]).mark) + OBJECT_TIB_OFFSET);  VM_Magic.setMemoryWord(VM_Magic.objectAsAddress(alloc_block.mark) +    OBJECT_TIB_OFFSET, byte_array_tib);  VM_Magic.setMemoryWord(VM_Magic.objectAsAddress(alloc_block.mark) +    ARRAY_LENGTH_OFFSET, size);  return theblock;  }