annotate src/w32heap.c @ 88054:eae3aec0f807

2008-01-29 John Wiegley <johnw@newartisans.com> * url-auth.el (url-digest-auth): If the 'opaque' argument is not being used, don't add it to the response text. Also, changed an if so that the interaction between the PROMPT and OVERWRITE arguments can no longer result in the user being queried twice for the same login and password information.
author John Wiegley <johnw@newartisans.com>
date Tue, 29 Jan 2008 03:52:05 +0000
parents fc2bcd2a8aad
children 606f2d163a64 8971ddf55736
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16884
36babc489b0c Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents: 16593
diff changeset
1 /* Heap management routines for GNU Emacs on the Microsoft W32 API.
75227
e90d04cd455a Update copyright for years from Emacs 21 to present (mainly adding
Glenn Morris <rgm@gnu.org>
parents: 70966
diff changeset
2 Copyright (C) 1994, 2001, 2002, 2003, 2004, 2005,
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
3 2006, 2007, 2008 Free Software Foundation, Inc.
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12452
diff changeset
5 This file is part of GNU Emacs.
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12452
diff changeset
7 GNU Emacs is free software; you can redistribute it and/or modify
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12452
diff changeset
8 it under the terms of the GNU General Public License as published by
78260
922696f363b0 Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents: 75227
diff changeset
9 the Free Software Foundation; either version 3, or (at your option)
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12452
diff changeset
10 any later version.
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12452
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12452
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12452
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12452
diff changeset
15 GNU General Public License for more details.
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12452
diff changeset
17 You should have received a copy of the GNU General Public License
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12452
diff changeset
18 along with GNU Emacs; see the file COPYING. If not, write to
64084
a8fa7c632ee4 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63088
diff changeset
19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
a8fa7c632ee4 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63088
diff changeset
20 Boston, MA 02110-1301, USA.
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 Geoff Voelker (voelker@cs.washington.edu) 7-29-94
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 */
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
42469
64341c22fb4c Include <config.h>.
Pavel Janík <Pavel@Janik.cz>
parents: 33215
diff changeset
25 #ifdef HAVE_CONFIG_H
64341c22fb4c Include <config.h>.
Pavel Janík <Pavel@Janik.cz>
parents: 33215
diff changeset
26 #include <config.h>
64341c22fb4c Include <config.h>.
Pavel Janík <Pavel@Janik.cz>
parents: 33215
diff changeset
27 #endif
12452
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
28
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 #include <stdlib.h>
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 #include <stdio.h>
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31
16593
4ed80eda6fac Use new names for w32 files
Geoff Voelker <voelker@cs.washington.edu>
parents: 16588
diff changeset
32 #include "w32heap.h"
15143
d7d0413e95e2 Include lisp.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14186
diff changeset
33 #include "lisp.h" /* for VALMASK */
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34
31111
14beb147ec06 [!USE_CRT_DLL]: Don't define _heap_init and _heap_term
Andrew Innes <andrewi@gnu.org>
parents: 24886
diff changeset
35 #define RVA_TO_PTR(rva) ((unsigned char *)((DWORD)(rva) + (DWORD)GetModuleHandle (NULL)))
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
36
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 /* This gives us the page size and the size of the allocation unit on NT. */
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 SYSTEM_INFO sysinfo_cache;
24886
fb9574318fa0 w32heap.c (osinfo_cache): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24103
diff changeset
39
fb9574318fa0 w32heap.c (osinfo_cache): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24103
diff changeset
40 /* This gives us version, build, and platform identification. */
fb9574318fa0 w32heap.c (osinfo_cache): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24103
diff changeset
41 OSVERSIONINFO osinfo_cache;
fb9574318fa0 w32heap.c (osinfo_cache): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24103
diff changeset
42
12452
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
43 unsigned long syspage_mask = 0;
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 /* The major and minor versions of NT. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15228
diff changeset
46 int w32_major_version;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15228
diff changeset
47 int w32_minor_version;
33215
38e1998861ff (w32_build_number): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 31111
diff changeset
48 int w32_build_number;
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49
19708
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
50 /* Distinguish between Windows NT and Windows 95. */
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
51 int os_subtype;
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
52
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 /* Cache information describing the NT system for later use. */
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 void
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 cache_system_info (void)
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 {
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
57 union
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 {
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
59 struct info
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 {
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 char major;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 char minor;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 short platform;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 } info;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 DWORD data;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 } version;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 /* Cache the version of the operating system. */
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 version.data = GetVersion ();
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15228
diff changeset
70 w32_major_version = version.info.major;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15228
diff changeset
71 w32_minor_version = version.info.minor;
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72
19708
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
73 if (version.info.platform & 0x8000)
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
74 os_subtype = OS_WIN95;
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
75 else
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
76 os_subtype = OS_NT;
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
77
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 /* Cache page size, allocation unit, processor type, etc. */
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 GetSystemInfo (&sysinfo_cache);
12452
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
80 syspage_mask = sysinfo_cache.dwPageSize - 1;
24886
fb9574318fa0 w32heap.c (osinfo_cache): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24103
diff changeset
81
fb9574318fa0 w32heap.c (osinfo_cache): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24103
diff changeset
82 /* Cache os info. */
fb9574318fa0 w32heap.c (osinfo_cache): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24103
diff changeset
83 osinfo_cache.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
fb9574318fa0 w32heap.c (osinfo_cache): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24103
diff changeset
84 GetVersionEx (&osinfo_cache);
33215
38e1998861ff (w32_build_number): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 31111
diff changeset
85
38e1998861ff (w32_build_number): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 31111
diff changeset
86 w32_build_number = osinfo_cache.dwBuildNumber;
38e1998861ff (w32_build_number): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 31111
diff changeset
87 if (os_subtype == OS_WIN95)
38e1998861ff (w32_build_number): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 31111
diff changeset
88 w32_build_number &= 0xffff;
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 }
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90
18506
bcc706aedcea Add pragma to force zero initialized
Geoff Voelker <voelker@cs.washington.edu>
parents: 16884
diff changeset
91 /* Emulate getpagesize. */
bcc706aedcea Add pragma to force zero initialized
Geoff Voelker <voelker@cs.washington.edu>
parents: 16884
diff changeset
92 int
bcc706aedcea Add pragma to force zero initialized
Geoff Voelker <voelker@cs.washington.edu>
parents: 16884
diff changeset
93 getpagesize (void)
bcc706aedcea Add pragma to force zero initialized
Geoff Voelker <voelker@cs.washington.edu>
parents: 16884
diff changeset
94 {
bcc706aedcea Add pragma to force zero initialized
Geoff Voelker <voelker@cs.washington.edu>
parents: 16884
diff changeset
95 return sysinfo_cache.dwPageSize;
bcc706aedcea Add pragma to force zero initialized
Geoff Voelker <voelker@cs.washington.edu>
parents: 16884
diff changeset
96 }
bcc706aedcea Add pragma to force zero initialized
Geoff Voelker <voelker@cs.washington.edu>
parents: 16884
diff changeset
97
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
98 /* Info for managing our preload heap, which is essentially a fixed size
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
99 data area in the executable. */
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
100 PIMAGE_SECTION_HEADER preload_heap_section;
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 /* Info for keeping track of our heap. */
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 unsigned char *data_region_base = NULL;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 unsigned char *data_region_end = NULL;
12452
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
105 unsigned char *real_data_region_end = NULL;
11943
ea533622fb8b (reserved_heap_size,allocate_heap): Defined.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11385
diff changeset
106 unsigned long reserved_heap_size = 0;
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 /* The start of the data segment. */
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 unsigned char *
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 get_data_start (void)
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 {
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 return data_region_base;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 }
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 /* The end of the data segment. */
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 unsigned char *
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 get_data_end (void)
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 {
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 return data_region_end;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 }
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121
11943
ea533622fb8b (reserved_heap_size,allocate_heap): Defined.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11385
diff changeset
122 static char *
ea533622fb8b (reserved_heap_size,allocate_heap): Defined.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11385
diff changeset
123 allocate_heap (void)
ea533622fb8b (reserved_heap_size,allocate_heap): Defined.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11385
diff changeset
124 {
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
125 /* Try to get as much as possible of the address range from the end of
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
126 the preload heap section up to the usable address limit. Since GNU
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
127 malloc can handle gaps in the memory it gets from sbrk, we can
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
128 simply set the sbrk pointer to the base of the new heap region. */
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
129 unsigned long base =
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
130 ROUND_UP ((RVA_TO_PTR (preload_heap_section->VirtualAddress)
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
131 + preload_heap_section->Misc.VirtualSize),
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
132 get_allocation_unit ());
15143
d7d0413e95e2 Include lisp.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14186
diff changeset
133 unsigned long end = 1 << VALBITS; /* 256MB */
15208
01588278fceb (allocate_heap): Bump heap base up to 27MB to
Geoff Voelker <voelker@cs.washington.edu>
parents: 15143
diff changeset
134 void *ptr = NULL;
11943
ea533622fb8b (reserved_heap_size,allocate_heap): Defined.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11385
diff changeset
135
15208
01588278fceb (allocate_heap): Bump heap base up to 27MB to
Geoff Voelker <voelker@cs.washington.edu>
parents: 15143
diff changeset
136 while (!ptr && (base < end))
01588278fceb (allocate_heap): Bump heap base up to 27MB to
Geoff Voelker <voelker@cs.washington.edu>
parents: 15143
diff changeset
137 {
01588278fceb (allocate_heap): Bump heap base up to 27MB to
Geoff Voelker <voelker@cs.washington.edu>
parents: 15143
diff changeset
138 reserved_heap_size = end - base;
01588278fceb (allocate_heap): Bump heap base up to 27MB to
Geoff Voelker <voelker@cs.washington.edu>
parents: 15143
diff changeset
139 ptr = VirtualAlloc ((void *) base,
01588278fceb (allocate_heap): Bump heap base up to 27MB to
Geoff Voelker <voelker@cs.washington.edu>
parents: 15143
diff changeset
140 get_reserved_heap_size (),
01588278fceb (allocate_heap): Bump heap base up to 27MB to
Geoff Voelker <voelker@cs.washington.edu>
parents: 15143
diff changeset
141 MEM_RESERVE,
01588278fceb (allocate_heap): Bump heap base up to 27MB to
Geoff Voelker <voelker@cs.washington.edu>
parents: 15143
diff changeset
142 PAGE_NOACCESS);
01588278fceb (allocate_heap): Bump heap base up to 27MB to
Geoff Voelker <voelker@cs.washington.edu>
parents: 15143
diff changeset
143 base += 0x00100000; /* 1MB increment */
01588278fceb (allocate_heap): Bump heap base up to 27MB to
Geoff Voelker <voelker@cs.washington.edu>
parents: 15143
diff changeset
144 }
15228
ae9888a75348 (allocate_heap): Clean up conditional.
Richard M. Stallman <rms@gnu.org>
parents: 15208
diff changeset
145
15208
01588278fceb (allocate_heap): Bump heap base up to 27MB to
Geoff Voelker <voelker@cs.washington.edu>
parents: 15143
diff changeset
146 return ptr;
11943
ea533622fb8b (reserved_heap_size,allocate_heap): Defined.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11385
diff changeset
147 }
ea533622fb8b (reserved_heap_size,allocate_heap): Defined.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11385
diff changeset
148
ea533622fb8b (reserved_heap_size,allocate_heap): Defined.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11385
diff changeset
149
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 /* Emulate Unix sbrk. */
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 void *
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 sbrk (unsigned long increment)
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 {
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 void *result;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 long size = (long) increment;
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
156
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 result = data_region_end;
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
158
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 /* If size is negative, shrink the heap by decommitting pages. */
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
160 if (size < 0)
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 {
12452
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
162 int new_size;
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
163 unsigned char *new_data_region_end;
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
164
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 size = -size;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 /* Sanity checks. */
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 if ((data_region_end - size) < data_region_base)
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 return NULL;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
171 /* We can only decommit full pages, so allow for
12452
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
172 partial deallocation [cga]. */
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
173 new_data_region_end = (data_region_end - size);
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
174 new_data_region_end = (unsigned char *)
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
175 ((long) (new_data_region_end + syspage_mask) & ~syspage_mask);
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
176 new_size = real_data_region_end - new_data_region_end;
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
177 real_data_region_end = new_data_region_end;
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
178 if (new_size > 0)
12452
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
179 {
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
180 /* Decommit size bytes from the end of the heap. */
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
181 if (using_dynamic_heap
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
182 && !VirtualFree (real_data_region_end, new_size, MEM_DECOMMIT))
12452
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
183 return NULL;
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
184 }
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 data_region_end -= size;
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
187 }
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 /* If size is positive, grow the heap by committing reserved pages. */
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
189 else if (size > 0)
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 {
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 /* Sanity checks. */
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 if ((data_region_end + size) >
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 (data_region_base + get_reserved_heap_size ()))
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 return NULL;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 /* Commit more of our heap. */
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
197 if (using_dynamic_heap
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
198 && VirtualAlloc (data_region_end, size, MEM_COMMIT,
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
199 PAGE_READWRITE) == NULL)
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 return NULL;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 data_region_end += size;
12452
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
202
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
203 /* We really only commit full pages, so record where
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
204 the real end of committed memory is [cga]. */
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
205 real_data_region_end = (unsigned char *)
bd304be0b491 Include config.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 11943
diff changeset
206 ((long) (data_region_end + syspage_mask) & ~syspage_mask);
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 }
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
208
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 return result;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 }
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
212 /* Initialize the internal heap variables used by sbrk. When running in
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
213 preload phase (ie. in the undumped executable), we rely entirely on a
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
214 fixed size heap section included in the .exe itself; this is
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
215 preserved during dumping, and truncated to the size actually used.
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
216
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
217 When running in the dumped executable, we reserve as much as possible
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
218 of the address range that is addressable by Lisp object pointers, to
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
219 supplement what is left of the preload heap. Although we cannot rely
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
220 on the dynamically allocated arena being contiguous with the static
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
221 heap area, it is not a problem because sbrk can pretend that the gap
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
222 was allocated by something else; GNU malloc detects when there is a
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
223 jump in the sbrk values, and starts a new heap block. */
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 void
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
225 init_heap ()
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 {
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
227 PIMAGE_DOS_HEADER dos_header;
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
228 PIMAGE_NT_HEADERS nt_header;
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
229
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
230 dos_header = (PIMAGE_DOS_HEADER) RVA_TO_PTR (0);
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
231 nt_header = (PIMAGE_NT_HEADERS) (((unsigned long) dos_header) +
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
232 dos_header->e_lfanew);
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
233 preload_heap_section = find_section ("EMHEAP", nt_header);
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
235 if (using_dynamic_heap)
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
236 {
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
237 data_region_base = allocate_heap ();
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
238 if (!data_region_base)
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
239 {
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
240 printf ("Error: Could not reserve dynamic heap area.\n");
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
241 exit (1);
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
242 }
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243
55661
272f0851d05e [USE_LSB_TAG]: Don't check heap location.
Jason Rumney <jasonr@gnu.org>
parents: 52401
diff changeset
244 #if defined (NO_UNION_TYPE) && !defined (USE_LSB_TAG)
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
245 /* Ensure that the addresses don't use the upper tag bits since
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
246 the Lisp type goes there. */
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
247 if (((unsigned long) data_region_base & ~VALMASK) != 0)
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
248 {
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
249 printf ("Error: The heap was allocated in upper memory.\n");
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
250 exit (1);
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
251 }
55661
272f0851d05e [USE_LSB_TAG]: Don't check heap location.
Jason Rumney <jasonr@gnu.org>
parents: 52401
diff changeset
252 #endif
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
253 data_region_end = data_region_base;
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
254 real_data_region_end = data_region_end;
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
255 }
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
256 else
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
257 {
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
258 data_region_base = RVA_TO_PTR (preload_heap_section->VirtualAddress);
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
259 data_region_end = data_region_base;
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
260 real_data_region_end = data_region_end;
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
261 reserved_heap_size = preload_heap_section->Misc.VirtualSize;
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
262 }
19708
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
263
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
264 /* Update system version information to match current system. */
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
265 cache_system_info ();
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 }
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 /* Round the heap up to the given alignment. */
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 void
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 round_heap (unsigned long align)
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 {
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 unsigned long needs_to_be;
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 unsigned long need_to_alloc;
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
274
24103
4adfa5300fd8 (RVA_TO_PTR): Redefine to convert RVA to address in
Andrew Innes <andrewi@gnu.org>
parents: 23171
diff changeset
275 needs_to_be = (unsigned long) ROUND_UP (get_heap_end (), align);
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 need_to_alloc = needs_to_be - (unsigned long) get_heap_end ();
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
277
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
278 if (need_to_alloc)
9803
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 sbrk (need_to_alloc);
fa698fd10c05 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 }
19708
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
281
48046
e81472bb5044 Don't redefine _heap_init and _heap_term on MSVC 7 build environments. Patch
Juanma Barranquero <lekktu@gmail.com>
parents: 42469
diff changeset
282 #if (_MSC_VER >= 1000 && _MSC_VER < 1300 && !defined(USE_CRT_DLL))
19708
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
283
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
284 /* MSVC 4.2 invokes these functions from mainCRTStartup to initialize
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
285 a heap via HeapCreate. They are normally defined by the runtime,
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
286 but we override them here so that the unnecessary HeapCreate call
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
287 is not performed. */
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
288
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
289 int __cdecl
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
290 _heap_init (void)
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
291 {
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
292 /* Stepping through the assembly indicates that mainCRTStartup is
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
293 expecting a nonzero success return value. */
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
294 return 1;
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
295 }
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
296
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
297 void __cdecl
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
298 _heap_term (void)
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
299 {
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
300 return;
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
301 }
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
302
16e69fbdbf0f (os_subtype): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18506
diff changeset
303 #endif
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 48046
diff changeset
304
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 48046
diff changeset
305 /* arch-tag: 9a6a9860-040d-422d-8905-450dd535cd9c
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 48046
diff changeset
306 (do not change this comment) */