[5197] in Athena Bugs
RT 7.0 emacs
daemon@ATHENA.MIT.EDU (John Carr)
Mon Jun 18 00:14:59 1990
To: bugs@ATHENA.MIT.EDU
Date: Mon, 18 Jun 90 00:14:41 EDT
From: John Carr <jfc@ATHENA.MIT.EDU>
These are a set of changes to emacs to increase performance (partly by
reducing data size [decreasing start up time and memory demands], and partly
by code optimization).
m-ibmrt.h: This file has workarounds for what I think were bugs in the
original RT pcc. They are not needed with hc. hc has a built in alloca that
should be used instead of the C library function. The compiler option
"-Hon=read_only_strings" should be used when compiling. It is faster to sign
extend a character by doing 2 shifts.
config_H.h: The array into which functions to be undumped are saved is too
large (it shouldn't even be needed at all on the RT, but emacs doesn't fully
understand machines which aren't like vaxes).
alloc.c: Don't initialize the "pure" array if it doesn't need to be undumped
read-only. This change is in epoch, so it is likely also in emacs 18.55.
Decrease in binary size is 34K overall (+20K text, -50K data). (This will
increase when linking against the latest X libraries.)
*** src/alloc.c Wed Jul 12 17:26:22 1989
--- alloc.c Sun Jun 17 15:57:31 1990
***************
*** 50,56 ****
/* Non-nil means defun should do purecopy on the function definition */
Lisp_Object Vpurify_flag;
! int pure[PURESIZE / sizeof (int)] = {0,}; /* Force it into data space! */
#define PUREBEG (char *) pure
--- 50,60 ----
/* Non-nil means defun should do purecopy on the function definition */
Lisp_Object Vpurify_flag;
! int pure[PURESIZE / sizeof (int)]
! #ifndef NO_REMAP
! = {0,} /* Force it into data space! */
! #endif
! ;
#define PUREBEG (char *) pure
*** src/config_H.h Wed Jul 12 16:02:15 1989
--- config_H.h Sun Jun 17 17:49:36 1990
***************
*** 101,107 ****
#ifndef PURESIZE
#ifdef HAVE_X_WINDOWS
! #define PURESIZE 150000
#else
#define PURESIZE 118000
#endif
--- 101,107 ----
#ifndef PURESIZE
#ifdef HAVE_X_WINDOWS
! #define PURESIZE 130000
#else
#define PURESIZE 118000
#endif
*** src/m-ibmrt.h Wed Aug 9 19:10:51 1989
--- m-ibmrt.h Sun Jun 17 16:22:39 1990
***************
*** 46,52 ****
To: bugs
cc:
Subject: RT 7.0 emacs
--------
These are a set of changes to emacs to increase performance (partly by
reducing data size [decreasing start up time and memory demands], and partly
by code optimization).
m-ibmrt.h: This file has workarounds for what I think were bugs in the
original RT pcc. They are not needed with hc. hc has a built in alloca that
should be used instead of the C library function. The compiler option
"-Hon=read_only_strings" should be used when compiling. It is faster to sign
extend a character by doing 2 shifts.
config_H.h: The array into which functions to be undumped are saved is too
large (it shouldn't even be needed at all on the RT, but emacs doesn't fully
understand machines which aren't like vaxes).
alloc.c: Don't initialize the "pure" array if it doesn't need to be undumped
read-only. This change is in epoch, so it is likely also in emacs 18.55.
Decrease in binary size is 34K overall (+20K text, -50K data). (This will
increase when linking against the latest X libraries.)
*** src/alloc.c Wed Jul 12 17:26:22 1989
--- alloc.c Sun Jun 17 15:57:31 1990
***************
*** 50,56 ****
/* Non-nil means defun should do purecopy on the function definition */
Lisp_Object Vpurify_flag;
! int pure[PURESIZE / sizeof (int)] = {0,}; /* Force it into data space! */
#define PUREBEG (char *) pure
--- 50,60 ----
/* Non-nil means defun should do purecopy on the function definition */
Lisp_Object Vpurify_flag;
! int pure[PURESIZE / sizeof (int)]
! #ifndef NO_REMAP
! = {0,} /* Force it into data space! */
! #endif
! ;
#define PUREBEG (char *) pure
*** src/config_H.h Wed Jul 12 16:02:15 1989
--- config_H.h Sun Jun 17 17:49:36 1990
***************
*** 101,107 ****
#ifndef PURESIZE
#ifdef HAVE_X_WINDOWS
! #define PURESIZE 150000
#else
#define PURESIZE 118000
#endif
--- 101,107 ----
#ifndef PURESIZE
#ifdef HAVE_X_WINDOWS
! #define PURESIZE 130000
#else
#define PURESIZE 118000
#endif
*** src/m-ibmrt.h Wed Aug 9 19:10:51 1989
--- m-ibmrt.h Sun Jun 17 16:22:39 1990
***************
*** 46,52 ****
/* Define how to take a char and sign-extend into an int.
On machines where char is signed, this is a no-op. */
! #define SIGN_EXTEND_CHAR(c) (((c) & 0x80) ? ((c) | 0xffffff80) : (c))
/* Now define a symbol for the cpu type, if your compiler
does not define it automatically. */
--- 46,53 ----
/* Define how to take a char and sign-extend into an int.
On machines where char is signed, this is a no-op. */
! /* #define SIGN_EXTEND_CHAR(c) (((c) & 0x80) ? ((c) | 0xffffff80) : (c)) */
! #define SIGN_EXTEND_CHAR(c) (((c) << 24) >> 24)
/* Now define a symbol for the cpu type, if your compiler
does not define it automatically. */
***************
*** 127,133 ****
/* Special switches to give the C compiler. */
! #define C_SWITCH_MACHINE -ma
/* Don't attempt to relabel some of the data as text when dumping.
It does not work because their virtual addresses are not consecutive.
--- 128,134 ----
/* Special switches to give the C compiler. */
! #define C_SWITCH_MACHINE -Dalloca=_Alloca -Hon=read_only_strings
/* Don't attempt to relabel some of the data as text when dumping.
It does not work because their virtual addresses are not consecutive.
***************
*** 137,143 ****
/* Turn off some `register' declarations. */
! #define RTPC_REGISTER_BUG
/* (short) negative-int doesn't sign-extend correctly */
! #define SHORT_CAST_BUG
--- 138,144 ----
/* Turn off some `register' declarations. */
! /* #define RTPC_REGISTER_BUG */
/* (short) negative-int doesn't sign-extend correctly */
! /* #define SHORT_CAST_BUG */
/* Define how to take a char and sign-extend into an int.
On machines where char is signed, this is a no-op. */
! #define SIGN_EXTEND_CHAR(c) (((c) & 0x80) ? ((c) | 0xffffff80) : (c))
/* Now define a symbol for the cpu type, if your compiler
does not define it automatically. */
--- 46,53 ----
/* Define how to take a char and sign-extend into an int.
On machines where char is signed, this is a no-op. */
! /* #define SIGN_EXTEND_CHAR(c) (((c) & 0x80) ? ((c) | 0xffffff80) : (c)) */
! #define SIGN_EXTEND_CHAR(c) (((c) << 24) >> 24)
/* Now define a symbol for the cpu type, if your compiler
does not define it automatically. */
***************
*** 127,133 ****
/* Special switches to give the C compiler. */
! #define C_SWITCH_MACHINE -ma
/* Don't attempt to relabel some of the data as text when dumping.
It does not work because their virtual addresses are not consecutive.
--- 128,134 ----
/* Special switches to give the C compiler. */
! #define C_SWITCH_MACHINE -Dalloca=_Alloca -Hon=read_only_strings
/* Don't attempt to relabel some of the data as text when dumping.
It does not work because their virtual addresses are not consecutive.
***************
*** 137,143 ****
/* Turn off some `register' declarations. */
! #define RTPC_REGISTER_BUG
/* (short) negative-int doesn't sign-extend correctly */
! #define SHORT_CAST_BUG
--- 138,144 ----
/* Turn off some `register' declarations. */
! /* #define RTPC_REGISTER_BUG */
/* (short) negative-int doesn't sign-extend correctly */
! /* #define SHORT_CAST_BUG */