From xemacs-m  Tue Feb 25 17:54:49 1997
Received: from altair.xemacs.org (steve@xemacs.miranova.com [206.190.83.19])
	by xemacs.org (8.8.5/8.8.5) with ESMTP id RAA11315
	for <xemacs-beta@xemacs.org>; Tue, 25 Feb 1997 17:54:47 -0600 (CST)
Received: (from steve@localhost)
	by altair.xemacs.org (8.8.5/8.8.5) id QAA22166;
	Tue, 25 Feb 1997 16:06:22 -0800
Mail-Copies-To: never
To: xemacs-beta@xemacs.org
Subject: Dynamic PURESIZE for 19.15 plus corrections
X-Url: http://www.miranova.com/%7Esteve/
X-Face: #!T9!#9s-3o8)*uHlX{Ug[xW7E7Wr!*L46-OxqMu\xz23v|R9q}lH?cRS{rCNe^'[`^sr5"
 f8*@r4ipO6Jl!:Ccq<xoV[Qz2u8<8-+Vwf2gzJ44lf_/y9OaQ`@#Q65{U4/TC)i2`~/M&QI$X>p:9I
 OSS'2{-)-4wBnVeg0S\O4Al@)uC[pD|+
X-Attribution: sb
From: Steven L Baur <steve@miranova.com>
Mime-Version: 1.0 (generated by tm-edit 7.105)
Content-Type: multipart/mixed;
 boundary="Multipart_Tue_Feb_25_16:06:16_1997-1"
Content-Transfer-Encoding: 7bit
Date: 25 Feb 1997 16:06:17 -0800
Message-ID: <m2wwrw5t3a.fsf@altair.xemacs.org>
Lines: 229
X-Mailer: Gnus v5.4.15/XEmacs 20.1

--Multipart_Tue_Feb_25_16:06:16_1997-1
Content-Type: text/plain; charset=US-ASCII

The previous patch fails when used with `make all-elc' :-(.  The
pure_lossage computation really isn't very good so if the starting
value is too low it may take two further rebuilds to reach an
acceptable value.  Two iterations starting from a too-high value
appears  sufficient.  Perhaps a `make clean' should leave a PURESIZE.h
with a huge value (a `make distclean' definitely will).

A corrected patch for 20.1-b2:src/alloc.c is attached at the end
(encoded so this message can be safely fed to patch in the 19.15
source tree).

You must have a src/PURESIZE.h file to start off.

--Multipart_Tue_Feb_25_16:06:16_1997-1
Content-Type: text/plain; charset=US-ASCII

/* This file is generated by XEmacs, DO NOT MODIFY!!! */
# define PURESIZE 622600

--Multipart_Tue_Feb_25_16:06:16_1997-1
Content-Type: text/plain; charset=US-ASCII

Index: Makefile.in.in
===================================================================
RCS file: /usr/local/xemacs/xemacs-19.15/src/Makefile.in.in,v
retrieving revision 1.9
diff -u -r1.9 Makefile.in.in
--- Makefile.in.in	1997/02/22 22:08:31	1.9
+++ Makefile.in.in	1997/02/25 23:09:53
@@ -1741,7 +1742,7 @@
 alloc.o: frame.h
 alloc.o: frameslots.h
 alloc.o: glyphs.h
-alloc.o: puresize.h
+alloc.o: puresize.h PURESIZE.h
 alloc.o: redisplay.h
 alloc.o: scrollbar.h
 alloc.o: specifier.h
@@ -2886,7 +2887,7 @@
 pure.o: blocktype.h
 pure.o: config.h
 pure.o: dynarr.h
-pure.o: puresize.h
+pure.o: puresize.h PURESIZE.h
 ralloc.o: blocktype.h
 ralloc.o: config.h
 ralloc.o: dynarr.h

Index: puresize.h
===================================================================
RCS file: /usr/local/xemacs/xemacs-19.15/src/puresize.h,v
retrieving revision 1.3
diff -u -r1.3 puresize.h
--- puresize.h	1997/02/09 23:52:46	1.3
+++ puresize.h	1997/02/25 23:10:44
@@ -27,7 +27,7 @@
 /* If PURESIZE is already defined then the user overrode it at
    configure time. */
 #ifndef PURESIZE
-
+#if 0
 /* Basic amount of purespace to use, in the absence of extra
    things configured in. */
 
@@ -120,6 +120,10 @@
 		  (SYSTEM_PURESIZE_EXTRA) + (MULE_PURESIZE_EXTRA) +	  \
 		  (TOOLTALK_PURESIZE_EXTRA) + (ENERGIZE_PURESIZE_EXTRA) + \
 		  (SUNPRO_PURESIZE_EXTRA))
+
+#endif
+
+# include "PURESIZE.h"
 
 #endif /* !PURESIZE */
 
Index: alloc.c
===================================================================
RCS file: /usr/local/xemacs/xemacs-19.15/src/alloc.c,v
retrieving revision 1.4
diff -u -r1.4 alloc.c
--- alloc.c	1997/02/09 23:52:19	1.4
+++ alloc.c	1997/02/25 23:45:22
@@ -2568,24 +2568,46 @@
 
 
 
+static void
+PURESIZE_h(long int puresize)
+{
+  int fd;
+  char *PURESIZE_h_file = "PURESIZE.h";
+  char *WARNING = "/* This file is generated by XEmacs, DO NOT MODIFY!!! */\n";
+  char define_PURESIZE[256];
+
+  if ((fd = open(PURESIZE_h_file, O_WRONLY)) < 0) {
+    report_file_error("Can't write PURESIZE",
+		      Fcons(build_ext_string(PURESIZE_h_file, FORMAT_FILENAME),
+			    Qnil));
+  }
+
+  write(fd, WARNING, strlen(WARNING));
+  sprintf(define_PURESIZE, "# define PURESIZE %ld\n", puresize);
+  write(fd, define_PURESIZE, strlen(define_PURESIZE));
+  close(fd);
+}
+
 void
 report_pure_usage (int report_impurities,
                    int die_if_pure_storage_exceeded)
 {
+  int rc = 0;
+
   if (pure_lossage)
     {
       CONST long report_round = 5000;
 
       message ("\n****\tPure Lisp storage exhausted!\n"
- "\tCheck whether you are loading .el files when .elc files were intended.\n"
- "\tOtherwise, increase PURESIZE in puresize.h and relink.\n\n"
- "\tPURESIZE is presently %ld.\n"
  "\tAn additional %ld bytes will guarantee enough pure space;\n"
  "\ta smaller increment may work (due to structure-sharing).\n"
  "****",
-	       (long) PURESIZE,
                (((pure_lossage + report_round - 1)
                  / report_round) * report_round));
+      if (die_if_pure_storage_exceeded) {
+	PURESIZE_h(PURESIZE + pure_lossage);
+	rc = -1;
+      }
     }
   else
     {
@@ -2595,8 +2617,14 @@
       sprintf (buf, "Purespace usage: %ld of %ld (%d%%",
                pureptr, (long) PURESIZE,
                (int) (pureptr / (PURESIZE / 100.0) + 0.5));
-      if (lost > 2)
+      if (lost > 2) {
         sprintf (buf + strlen (buf), " -- %dk wasted", lost);
+	if (die_if_pure_storage_exceeded) {
+	  PURESIZE_h(pureptr + 16);
+	  rc = -1;
+	}
+      }
+
       strcat (buf, ").");
       message ("%s", buf);
     }
@@ -2679,8 +2707,11 @@
     }
   clear_message ();
 
-  if (pure_lossage && die_if_pure_storage_exceeded)
+  if (rc < 0) {
+    fatal ("Pure size changed, please restart the build.");
+  } else if (pure_lossage && die_if_pure_storage_exceeded) {
     fatal ("Pure storage exhausted");
+  }
 }
 
 


--Multipart_Tue_Feb_25_16:06:16_1997-1
Content-Type: application/octet-stream; type=patch
Content-Disposition: attachment; filename="alloc.patch"
Content-Transfer-Encoding: base64

SW5kZXg6IGFsbG9jLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3Vzci9sb2NhbC94ZW1h
Y3MveGVtYWNzLTIwLjAvc3JjL2FsbG9jLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpk
aWZmIC11IC1yMS4zIGFsbG9jLmMKLS0tIGFsbG9jLmMJMTk5Ny8wMi8yNCAwMToxNDo0NQkx
LjMKKysrIGFsbG9jLmMJMTk5Ny8wMi8yNiAwMDowMzoyOApAQCAtMjU5NSwyNCArMjU5NSw0
NyBAQAogCiAKIAwKK3N0YXRpYyB2b2lkCitQVVJFU0laRV9oKGxvbmcgaW50IHB1cmVzaXpl
KQoreworICBpbnQgZmQ7CisgIGNoYXIgKlBVUkVTSVpFX2hfZmlsZSA9ICJQVVJFU0laRS5o
IjsKKyAgY2hhciAqV0FSTklORyA9ICIvKiBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IFhF
bWFjcywgRE8gTk9UIE1PRElGWSEhISAqL1xuIjsKKyAgY2hhciBkZWZpbmVfUFVSRVNJWkVb
MjU2XTsKKworICBpZiAoKGZkID0gb3BlbihQVVJFU0laRV9oX2ZpbGUsIE9fV1JPTkxZKSkg
PCAwKSB7CisgICAgcmVwb3J0X2ZpbGVfZXJyb3IoIkNhbid0IHdyaXRlIFBVUkVTSVpFIiwK
KwkJICAgICAgRmNvbnMoYnVpbGRfZXh0X3N0cmluZyhQVVJFU0laRV9oX2ZpbGUsIEZPUk1B
VF9GSUxFTkFNRSksCisJCQkgICAgUW5pbCkpOworICB9CisKKyAgd3JpdGUoZmQsIFdBUk5J
TkcsIHN0cmxlbihXQVJOSU5HKSk7CisgIHNwcmludGYoZGVmaW5lX1BVUkVTSVpFLCAiIyBk
ZWZpbmUgUFVSRVNJWkUgJWxkXG4iLCBwdXJlc2l6ZSk7CisgIHdyaXRlKGZkLCBkZWZpbmVf
UFVSRVNJWkUsIHN0cmxlbihkZWZpbmVfUFVSRVNJWkUpKTsKKyAgY2xvc2UoZmQpOworfQor
CiB2b2lkCiByZXBvcnRfcHVyZV91c2FnZSAoaW50IHJlcG9ydF9pbXB1cml0aWVzLAogICAg
ICAgICAgICAgICAgICAgIGludCBkaWVfaWZfcHVyZV9zdG9yYWdlX2V4Y2VlZGVkKQogewor
ICBpbnQgcmMgPSAwOworCiAgIGlmIChwdXJlX2xvc3NhZ2UpCiAgICAgewogICAgICAgQ09O
U1QgbG9uZyByZXBvcnRfcm91bmQgPSA1MDAwOwogCiAgICAgICBtZXNzYWdlICgiXG4qKioq
XHRQdXJlIExpc3Agc3RvcmFnZSBleGhhdXN0ZWQhXG4iCi0gIlx0Q2hlY2sgd2hldGhlciB5
b3UgYXJlIGxvYWRpbmcgLmVsIGZpbGVzIHdoZW4gLmVsYyBmaWxlcyB3ZXJlIGludGVuZGVk
LlxuIgotICJcdE90aGVyd2lzZSwgaW5jcmVhc2UgUFVSRVNJWkUgaW4gcHVyZXNpemUuaCBh
bmQgcmVsaW5rLlxuXG4iCi0gIlx0UFVSRVNJWkUgaXMgcHJlc2VudGx5ICVsZC5cbiIKICAi
XHRBbiBhZGRpdGlvbmFsICVsZCBieXRlcyB3aWxsIGd1YXJhbnRlZSBlbm91Z2ggcHVyZSBz
cGFjZTtcbiIKICAiXHRhIHNtYWxsZXIgaW5jcmVtZW50IG1heSB3b3JrIChkdWUgdG8gc3Ry
dWN0dXJlLXNoYXJpbmcpLlxuIgogICIqKioqIiwKLQkgICAgICAgKGxvbmcpIFBVUkVTSVpF
LAogICAgICAgICAgICAgICAgKCgocHVyZV9sb3NzYWdlICsgcmVwb3J0X3JvdW5kIC0gMSkK
ICAgICAgICAgICAgICAgICAgLyByZXBvcnRfcm91bmQpICogcmVwb3J0X3JvdW5kKSk7Cisg
ICAgICBpZiAoZGllX2lmX3B1cmVfc3RvcmFnZV9leGNlZWRlZCkgeworCVBVUkVTSVpFX2go
UFVSRVNJWkUgKyAoKChwdXJlX2xvc3NhZ2UgKyByZXBvcnRfcm91bmQgLSAxKQorCQkJCS8g
cmVwb3J0X3JvdW5kKSAqIHJlcG9ydF9yb3VuZCkpOworCXJjID0gLTE7CisgICAgICB9CiAg
ICAgfQogICBlbHNlCiAgICAgewpAQCAtMjYyMiw4ICsyNjQ1LDE0IEBACiAgICAgICBzcHJp
bnRmIChidWYsICJQdXJlc3BhY2UgdXNhZ2U6ICVsZCBvZiAlbGQgKCVkJSUiLAogICAgICAg
ICAgICAgICAgcHVyZXB0ciwgKGxvbmcpIFBVUkVTSVpFLAogICAgICAgICAgICAgICAgKGlu
dCkgKHB1cmVwdHIgLyAoUFVSRVNJWkUgLyAxMDAuMCkgKyAwLjUpKTsKLSAgICAgIGlmIChs
b3N0ID4gMikKKyAgICAgIGlmIChsb3N0ID4gMikgewogICAgICAgICBzcHJpbnRmIChidWYg
KyBzdHJsZW4gKGJ1ZiksICIgLS0gJWRrIHdhc3RlZCIsIGxvc3QpOworCWlmIChkaWVfaWZf
cHVyZV9zdG9yYWdlX2V4Y2VlZGVkKSB7CisJICBQVVJFU0laRV9oKHB1cmVwdHIgKyAxNik7
CisJICByYyA9IC0xOworCX0KKyAgICAgIH0KKwogICAgICAgc3RyY2F0IChidWYsICIpLiIp
OwogICAgICAgbWVzc2FnZSAoIiVzIiwgYnVmKTsKICAgICB9CkBAIC0yNzA2LDggKzI3MzUs
MTEgQEAKICAgICB9CiAgIGNsZWFyX21lc3NhZ2UgKCk7CiAKLSAgaWYgKHB1cmVfbG9zc2Fn
ZSAmJiBkaWVfaWZfcHVyZV9zdG9yYWdlX2V4Y2VlZGVkKQorICBpZiAocmMgPCAwKSB7Cisg
ICAgZmF0YWwgKCJQdXJlIHNpemUgY2hhbmdlZCwgcGxlYXNlIHJlc3RhcnQgdGhlIGJ1aWxk
LiIpOworICB9IGVsc2UgaWYgKHB1cmVfbG9zc2FnZSAmJiBkaWVfaWZfcHVyZV9zdG9yYWdl
X2V4Y2VlZGVkKSB7CiAgICAgZmF0YWwgKCJQdXJlIHN0b3JhZ2UgZXhoYXVzdGVkIik7Cisg
IH0KIH0KIAogDAo=

--Multipart_Tue_Feb_25_16:06:16_1997-1
Content-Type: text/plain; charset=US-ASCII


-- 
steve@miranova.com baur
Unsolicited commercial e-mail will be billed at $250/message.

--Multipart_Tue_Feb_25_16:06:16_1997-1--

