Mercurial > emacs
view src/s/usg5-4-2.h @ 4139:0b32ee899a3a
Consistently use the mark bit of the root interval's parent field
to say whether or not the interval tree has been visited (and skip
it when revisited), and the mark bit of the plist field to say
whether or not that interval has been visited (and abort if
revisited); don't try to use the plist mark bit for both
meanings.
* alloc.c (mark_interval_tree): Don't test if the interval tree
has already been visited here; let the MARK_INTERVAL_TREE macro do
that; avoid function call overhead. Mark the interval tree as
having been visited by setting TREE->parent's mark bit.
(MARK_INTERVAL_TREE): If the tree has been visited (according to
I->parent's mark bit), don't call mark_interval_tree.
(gc_sweep): Rebalance the interval trees of those large strings
which are still alive. This also clears the mark bits of those
trees' root intervals' parent fields.
(compact_strings): Rebalance the interval tree of each small
strings which is still alive. This also clears the mark bits of
that tree's root interval's parent field. Since the string has
moved, update the root interval's parent pointer to contain the
new address.
* lisp.h (struct interval): Doc fix; explain the roles of the mark
bits of the parent and plist members.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Sun, 18 Jul 1993 06:26:10 +0000 |
parents | 94593e8e6593 |
children | ed596b459f72 |
line wrap: on
line source
/* s/ file for System V release 4.2. */ #include "usg5-4.h" /* pcg@aber.ac.uk says this is useless since fork does copy-on-write #define HAVE_VFORK */ /* fnf@cygnus.com says these exist. */ #define HAVE_TCATTR #define HAVE_GETHOSTNAME #if 0 /* autoconf should take care of this. */ #define HAVE_RANDOM #endif /* #define HAVE_GETWD (appears to be buggy on SVR4.2) */ /* Info from fnf@cygnus.com suggests this is appropriate. */ #define POSIX_SIGNALS /* We don't need the definition from usg5-3.h with POSIX_SIGNALS. */ #undef sigsetmask #undef HAVE_SYSV_SIGPAUSE /* This is the same definition as in usg5-4.h, but with sigblock/sigunblock rather than sighold/sigrelse, which appear to be BSD4.1 specific and won't work if POSIX_SIGNALS is defined. It may also be appropriate for SVR4.x (x<2) but I'm not sure. fnf@cygnus.com */ /* This sets the name of the slave side of the PTY. On SysVr4, grantpt(3) forks a subprocess, so keep sigchld_handler() from intercepting that death. If any child but grantpt's should die within, it should be caught after sigrelse(2). */ #undef PTY_TTY_NAME_SPRINTF #define PTY_TTY_NAME_SPRINTF \ { \ char *ptsname(), *ptyname; \ \ sigblock(sigmask(SIGCLD)); \ if (grantpt(fd) == -1) \ fatal("could not grant slave pty"); \ sigunblock(sigmask(SIGCLD)); \ if (unlockpt(fd) == -1) \ fatal("could not unlock slave pty"); \ if (!(ptyname = ptsname(fd))) \ fatal ("could not enable slave pty"); \ strncpy(pty_name, ptyname, sizeof(pty_name)); \ pty_name[sizeof(pty_name) - 1] = 0; \ }