VM_Interface.getPlan().postAlloc(VM_Magic.objectAsAddress(result), stackTib, arraySize, false, Plan.IMMORTAL_SPACE);
VM_Interface.getPlan().postAlloc(VM_Magic.objectAsAddress(result), stackTib, arraySize, Plan.IMMORTAL_SPACE);
  public static byte[] newStack(int bytes, boolean immortal)    throws VM_PragmaInline, VM_PragmaInterruptible {    if (!immortal || !VM.runningVM)      return new byte[bytes];    int logAlignment = 12;    int alignment = 1 << logAlignment; // 4096    VM_Array stackType = VM_Array.ByteArray;    Object [] stackTib = stackType.getTypeInformationBlock();    int offset = VM_JavaHeader.computeArrayHeaderSize(stackType);    int arraySize = VM_Memory.alignUp(stackType.getInstanceSize(bytes), BYTES_IN_PARTICLE);    int fullSize = arraySize + alignment;  // somewhat wasteful    if (VM.VerifyAssertions) VM._assert(alignment > offset);    VM_Address fullRegion = VM_Interface.getPlan().alloc(fullSize, false, Plan.IMMORTAL_SPACE);    VM_Address tmp = fullRegion.add(alignment);    VM_Word mask = VM_Word.one().lsh(logAlignment).sub(VM_Word.one()).not();    VM_Address region = tmp.toWord().and(mask).sub(VM_Word.fromIntSignExtend(offset)).toAddress();    Object result = VM_ObjectModel.initializeArray(region, stackTib, bytes, arraySize);    VM_Interface.getPlan().postAlloc(VM_Magic.objectAsAddress(result), stackTib, arraySize, false, Plan.IMMORTAL_SPACE);    return (byte []) result;  }