VM_Address argp = VM_Address.fromInt(VM_Magic.getMemoryWord(VM_Magic.getFramePointer())).add(argOffset);
VM_Address argp = VM_Magic.getMemoryAddress(VM_Magic.getFramePointer()).add(argOffset);
  static Object newArrayArray(int numDimensions, int id, int argOffset)    throws NegativeArraySizeException, 	   OutOfMemoryError,	   ClassNotFoundException {    // fetch number of elements to be allocated for each array dimension    //    int[] numElements = new int[numDimensions];    VM.disableGC();    VM_Address argp = VM_Address.fromInt(VM_Magic.getMemoryWord(VM_Magic.getFramePointer())).add(argOffset);    for (int i = 0; i < numDimensions; ++i)      numElements[i] = VM_Magic.getMemoryWord(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    //    // create array    //    VM_TypeReference tRef = VM_TypeReference.getTypeRef(id);    VM_Array array = tRef.resolve().asArray();    return VM_Runtime.buildMultiDimensionalArray(numElements, 0, array);  }