Blob Blame Raw
Description: <short summary of the patch>
 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
Author: Camm Maguire <camm@debian.org>

---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: <YYYY-MM-DD>

--- gcl-2.6.12.orig/h/protoize.h
+++ gcl-2.6.12/h/protoize.h
@@ -1938,3 +1938,6 @@ check_avail_pages(void);
 
 inline int
 mbrk(void *);
+
+void
+maybe_set_hole_from_maxpages(void);
--- gcl-2.6.12.orig/o/alloc.c
+++ gcl-2.6.12/o/alloc.c
@@ -259,19 +259,15 @@ eg to add 20 more do (si::set-hole-size
 
     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);
 
 }
 
@@ -1177,6 +1173,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) {
 
   fixnum cssize=(1L<<23);
@@ -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;
   }
   
--- gcl-2.6.12.orig/o/main.c
+++ gcl-2.6.12/o/main.c
@@ -327,6 +327,7 @@ DEFUN_NEW("SET-LOG-MAXPAGE-BOUND",object
     minimize_image();
     log_maxpage_bound=l;
     update_real_maxpage();
+    maybe_set_hole_from_maxpages();
   }
 
   return (object)log_maxpage_bound;
--- gcl-2.6.12.orig/o/symbol.d
+++ gcl-2.6.12/o/symbol.d
@@ -533,8 +533,8 @@ DEFVAR("*GENSYM-COUNTER*",sLgensym_count
 	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];
--- gcl-2.6.12.orig/pcl/makefile
+++ gcl-2.6.12/pcl/makefile
@@ -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))