+#else /* USE_LISP_UNION_TYPE || USE_LSB_TAG */
+static char *
+allocate_heap (void)
+{
+ unsigned long size = 0x80000000; /* start by asking for 2GB */
+ void *ptr = NULL;
+
+ while (!ptr && size > 0x00100000)
+ {
+ reserved_heap_size = size;
+ ptr = VirtualAlloc (NULL,
+ get_reserved_heap_size (),
+ MEM_RESERVE,
+ PAGE_NOACCESS);
+ size -= 0x00800000; /* if failed, decrease request by 8MB */
+ }
+
+ return ptr;
+}
+#endif /* USE_LISP_UNION_TYPE || USE_LSB_TAG */