for (int i = 0; i < numDimensions; ++i) numElements[i] = VM_Magic.getMemoryInt(argp.sub(4 * (i + 1)));
for (int i = 0; i < numDimensions; ++i) { int offset = (BYTES_IN_STACKSLOT * i) + BYTES_IN_INT; numElements[i] = VM_Magic.getMemoryInt(argp.sub(offset)); }
  static Object newArrayArray(int methodId, int numDimensions, int id, int argOffset)    throws NegativeArraySizeException, 	   OutOfMemoryError  {    // fetch number of elements to be allocated for each array dimension    //    int[] numElements = new int[numDimensions];    VM.disableGC();    VM_Address argp = VM_Magic.getMemoryAddress(VM_Magic.getFramePointer()).add(argOffset);    for (int i = 0; i < numDimensions; ++i)      numElements[i] = VM_Magic.getMemoryInt(argp.sub(4 * (i + 1)));    VM.enableGC();    // validate arguments    //    for (int i = 0; i < numDimensions; ++i)      if (numElements[i] < 0) throw new NegativeArraySizeException();    // create array    //    VM_TypeReference tRef = VM_TypeReference.getTypeRef(id);    VM_Array array = tRef.resolve().asArray();    return VM_Runtime.buildMultiDimensionalArray(methodId, numElements, array);  }