inline int
mbrk(void *);
+
+void
+maybe_set_hole_from_maxpages(void);
holepage -= nn;
heap_end=v;
- return e;
+ } else if (v>(void *)core_end) {
+
+ massert(!mbrk(v));
+ core_end=v;
+
}
-
- if (nn<=(core_end-heap_end)/PAGESIZE)
- return(heap_end);
-
- if (mbrk(v))
- error("Can't allocate. Good-bye!");
-
- core_end=v;
-
- return(heap_end);
+
+ return(e);
}
#include <signal.h>
+void
+maybe_set_hole_from_maxpages(void) {
+ if (rb_start==heap_end && rb_end==rb_start && rb_limit==rb_start && rb_pointer==rb_start) {
+ holepage=new_holepage;
+ alloc_page(-holepage);
+ rb_start=rb_end=rb_limit=rb_pointer=heap_end+(holepage<<PAGEWIDTH);
+ }
+}
+
void
gcl_init_alloc(void *cs_start) {
update_real_maxpage();
if (gcl_alloc_initialized) {
- if (rb_start==heap_end && rb_end==rb_start && rb_limit==rb_start && rb_pointer==rb_start) {
- holepage=new_holepage;
- alloc_page(-holepage);
- rb_start=rb_end=rb_limit=rb_pointer=heap_end+(holepage<<PAGEWIDTH);
- }
+ maybe_set_hole_from_maxpages();
return;
}
minimize_image();
log_maxpage_bound=l;
update_real_maxpage();
+ maybe_set_hole_from_maxpages();
}
return (object)log_maxpage_bound;
set_up_string_register("");
sym = make_symbol(string_register);
{BEGIN_NO_INTERRUPT;
- sym->s.s_fillp = i;
sym->s.s_self = alloc_relblock(i);
+ sym->s.s_fillp = i;
i=this_gensym_prefix->st.st_fillp;
for (j = 0; j < i; j++)
sym->s.s_self[j] = this_gensym_prefix->st.st_self[j];
'(setq compiler::*default-c-file* t)'\
'(setq compiler::*default-data-file* t)'\
'(setq compiler::*default-system-p* t)' \
+ '(setq si::*code-block-reserve* (make-array 10000000 :element-type (quote character) :static t) a nil)' \
'(setq compiler::*keep-gaz* t compiler::*tmp-dir* "")'
all: $(addsuffix .c,$(AFILES)) $(addsuffix .o,$(AFILES))