Commit fab624aa authored by Eli Zaretskii's avatar Eli Zaretskii

Allow the Windows build to use upto 2GB of heap.

 src/w32heap.c (allocate_heap) [USE_LISP_UNION_TYPE || USE_LSB_TAG]:
 New version that can reserve upto 2GB of heap space.
 etc/NEWS: Mention the new feature.
parent b1c07b7b
......@@ -139,6 +139,11 @@ starting from the first line of text below the header line.
** The nextstep port can have different modifiers for the left and right
alt/option key by customizing the value for ns-right-alternate-modifier.
** The MS-Windows port can now use more than 500MB of heap.
Depending on the available virtual memory, Emacs on Windows can now
have up to 2GB of heap space. This allows, e.g., to visit several
large (> 256MB) files in the same session.
* Installation Changes in Emacs 23.2
......
2011-04-29 Eli Zaretskii <eliz@gnu.org>
* w32heap.c (allocate_heap) [USE_LISP_UNION_TYPE || USE_LSB_TAG]:
New version that can reserve upto 2GB of heap space.
2011-04-26 Chong Yidong <cyd@stupidchicken.com>
* nsfns.m (Fns_read_file_name): Doc fix (Bug#8534).
......
......@@ -119,6 +119,7 @@ get_data_end (void)
return data_region_end;
}
#if !defined (USE_LISP_UNION_TYPE) && !defined (USE_LSB_TAG)
static char *
allocate_heap (void)
{
......@@ -145,9 +146,31 @@ allocate_heap (void)
return ptr;
}
#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 */
/* Emulate Unix sbrk. */
/* Emulate Unix sbrk. Note that ralloc.c expects the return value to
be the address of the _start_ (not end) of the new block in case of
success, and zero (not -1) in case of failure. */
void *
sbrk (unsigned long increment)
{
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment