<short summary of the patch>
authorCamm Maguire <camm@debian.org>
Thu, 11 Aug 2022 17:16:42 +0000 (18:16 +0100)
committerCamm Maguire <camm@debian.org>
Thu, 11 Aug 2022 17:16:42 +0000 (18:16 +0100)
TODO: Put a short summary on the line above and replace this paragraph
with a longer explanation of this change. Complete the meta-information
with other relevant fields (see below for details). To make it easier, the
information below has been extracted from the changelog. Adjust it or drop
it.

gcl (2.6.12-3) unstable; urgency=medium

  * Version_2_6_13pre2

Gbp-Pq: Name Version_2_6_13pre3

h/protoize.h
o/alloc.c
o/main.c
o/symbol.d
pcl/makefile

index 44bf57f506bd730bfeaf8759c949ff0b22df38c1..98517d358a3be6fd0344663b35cdf0a63bec3262 100644 (file)
@@ -1938,3 +1938,6 @@ check_avail_pages(void);
 
 inline int
 mbrk(void *);
+
+void
+maybe_set_hole_from_maxpages(void);
index d41cbbb5b9e637342c51ebeb148f17c93f7b210c..be37deecee536aad6024bbdba24a67e72287f08c 100644 (file)
--- a/o/alloc.c
+++ b/o/alloc.c
@@ -259,19 +259,15 @@ eg to add 20 more do (si::set-hole-size %ld %d)\n...start over ",
 
     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);
 
 }
 
@@ -1176,6 +1172,15 @@ object malloc_list=Cnil;
 
 #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) {
 
@@ -1261,11 +1266,7 @@ 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;
   }
   
index 4a2254d556db24fe4f7961755e33fd169d3998cc..274f9815d6f76c66979d19a1a4fe7962de1b0cfb 100755 (executable)
--- a/o/main.c
+++ b/o/main.c
@@ -327,6 +327,7 @@ DEFUN_NEW("SET-LOG-MAXPAGE-BOUND",object,fSset_log_maxpage_bound,SI,1,1,NONE,II,
     minimize_image();
     log_maxpage_bound=l;
     update_real_maxpage();
+    maybe_set_hole_from_maxpages();
   }
 
   return (object)log_maxpage_bound;
index f1a277ca59bbb6715630a8bf5a53031ecdb6b48b..ff71deae8d4e094c0bfdd989175c4c1ca24e1e6c 100755 (executable)
@@ -533,8 +533,8 @@ DEFVAR("*GENSYM-COUNTER*",sLgensym_counter,LISP,make_fixnum(0),"");
        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];
index 9fb21cfbc373970a40bbb1e53ce895ab60aed183..3ebc3ea15f813911191b6b18a74c39b3d8bca026 100644 (file)
@@ -17,6 +17,7 @@ SETUP='(load "defsys.lisp")' \
        '(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))