changeset 15208:01588278fceb

(allocate_heap): Bump heap base up to 27MB to wsatisfy Win95.
author Geoff Voelker <voelker@cs.washington.edu>
date Sat, 11 May 1996 06:38:25 +0000
parents 5be55ce2c9fa
children 884b7293ccc7
files src/w32heap.c
diffstat 1 files changed, 21 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32heap.c	Sat May 11 00:29:46 1996 +0000
+++ b/src/w32heap.c	Sat May 11 06:38:25 1996 +0000
@@ -131,20 +131,31 @@
      size could be roughly double, so if we allow 4MB for the executable
      we will have plenty of room for expansion.
 
-     Thus we set the malloc heap base to 20MB.  Since Emacs now leaves
+     Thus we would like to set the malloc heap base to 20MB.  However,
+     Win95 refuses to allocate the heap starting at this address, so we
+     set the base to 27MB to make it happy.  Since Emacs now leaves
      28 bits available for pointers, this lets us use the remainder of
-     the region below the 256MB line for our malloc arena - 236MB is
-     still a pretty decent arena to play in! */
+     the region below the 256MB line for our malloc arena - 229MB is
+     still a pretty decent arena to play in!  */
 
-  unsigned long base = 0x01400000; /* 20MB */
+  unsigned long base = 0x01B00000;   /*  27MB */
   unsigned long end  = 1 << VALBITS; /* 256MB */
-
-  reserved_heap_size = end - base;
+  void *ptr = NULL;
 
-  return VirtualAlloc ((void *) base,
-		       get_reserved_heap_size (),
-		       MEM_RESERVE,
-		       PAGE_NOACCESS);
+#ifdef NTHEAP_PROBE_BASE
+  while (!ptr && (base < end))
+    {
+#endif
+      reserved_heap_size = end - base;
+      ptr = VirtualAlloc ((void *) base,
+			  get_reserved_heap_size (),
+			  MEM_RESERVE,
+			  PAGE_NOACCESS);
+#ifdef NTHEAP_PROBE_BASE
+      base += 0x00100000;  /* 1MB increment */
+    }
+#endif
+  return ptr;
 }