Previously this was introduced in D524 as a compile-time constant. Sadly, this isn't flexible
enough to allow for environments where ulimits restrict the maximum
address space size (see, for instance, Trac #10877).
Consequently, we are forced to make this dynamic. In principle this
shouldn't be so terrible as we can place both the beginning and end
addresses within the same cache line, likely incurring only one or so
additional instruction in HEAP_ALLOCED.