HCoop
/
bpt
/
emacs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix TTY menus on MS-Windows broken by last commit.
[bpt/emacs.git]
/
src
/
sheap.c
diff --git
a/src/sheap.c
b/src/sheap.c
index
510a75d
..
5069744
100644
(file)
--- a/
src/sheap.c
+++ b/
src/sheap.c
@@
-1,14
+1,14
@@
/* simulate `sbrk' with an array in .bss, for `unexec' support for Cygwin;
complete rewrite of xemacs Cygwin `unexec' code
/* simulate `sbrk' with an array in .bss, for `unexec' support for Cygwin;
complete rewrite of xemacs Cygwin `unexec' code
- Copyright (C) 2004
, 2005, 2006, 2007
Free Software Foundation, Inc.
+ Copyright (C) 2004
-2014
Free Software Foundation, Inc.
This file is part of GNU Emacs.
This file is part of GNU Emacs.
-GNU Emacs is free software
;
you can redistribute it and/or modify
+GNU Emacs is free software
:
you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU General Public License as published by
-the Free Software Foundation
; either version 2, or (at your option)
-any later version.
+the Free Software Foundation
, either version 3 of the License, or
+
(at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@
-16,17
+16,28
@@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA. */
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <stdio.h>
#include <config.h>
#include <stdio.h>
+
#include "lisp.h"
#include <unistd.h>
#include "lisp.h"
#include <unistd.h>
-#define STATIC_HEAP_SIZE (12 * 1024 * 1024)
+#ifdef __x86_64__
+#ifdef ENABLE_CHECKING
+#define STATIC_HEAP_SIZE (28 * 1024 * 1024)
+#else
+#define STATIC_HEAP_SIZE (19 * 1024 * 1024)
+#endif
+#else /* x86 */
+#ifdef ENABLE_CHECKING
+#define STATIC_HEAP_SIZE (18 * 1024 * 1024)
+#else
+#define STATIC_HEAP_SIZE (13 * 1024 * 1024)
+#endif
+#endif /* x86 */
int debug_sheap = 0;
int debug_sheap = 0;
@@
-34,6
+45,7
@@
int debug_sheap = 0;
char bss_sbrk_buffer[STATIC_HEAP_SIZE];
char *bss_sbrk_ptr;
char bss_sbrk_buffer[STATIC_HEAP_SIZE];
char *bss_sbrk_ptr;
+char *max_bss_sbrk_ptr;
int bss_sbrk_did_unexec;
void *
int bss_sbrk_did_unexec;
void *
@@
-41,7
+53,7
@@
bss_sbrk (ptrdiff_t request_size)
{
if (!bss_sbrk_ptr)
{
{
if (!bss_sbrk_ptr)
{
- bss_sbrk_ptr = bss_sbrk_buffer;
+
max_bss_sbrk_ptr =
bss_sbrk_ptr = bss_sbrk_buffer;
#ifdef CYGWIN
sbrk (BLOCKSIZE); /* force space for fork to work */
#endif
#ifdef CYGWIN
sbrk (BLOCKSIZE); /* force space for fork to work */
#endif
@@
-82,6
+94,8
@@
bss_sbrk (ptrdiff_t request_size)
if (debug_sheap)
printf ("allocated 0x%08x size %d\n", ret, request_size);
bss_sbrk_ptr += (int) request_size;
if (debug_sheap)
printf ("allocated 0x%08x size %d\n", ret, request_size);
bss_sbrk_ptr += (int) request_size;
+ if (bss_sbrk_ptr > max_bss_sbrk_ptr)
+ max_bss_sbrk_ptr = bss_sbrk_ptr;
return ret;
}
}
return ret;
}
}
@@
-90,10
+104,9
@@
void
report_sheap_usage (int die_if_pure_storage_exceeded)
{
char buf[200];
report_sheap_usage (int die_if_pure_storage_exceeded)
{
char buf[200];
- sprintf (buf, "Static heap usage: %d of %d bytes",
- bss_sbrk_ptr - bss_sbrk_buffer, STATIC_HEAP_SIZE);
- message ("%s", buf);
+ sprintf (buf, "Maximum static heap usage: %d of %d bytes",
+ max_bss_sbrk_ptr - bss_sbrk_buffer, STATIC_HEAP_SIZE);
+ /* Don't log messages, cause at this point, we're not allowed to create
+ buffers. */
+ message1_nolog (buf);
}
}
-
-/* arch-tag: 1bc386e8-71c2-4da4-b8b5-c1674a9cf926
- (do not change this comment) */