aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2011-04-19 12:10:31 -0700
committerPaul Eggert2011-04-19 12:10:31 -0700
commitf2d3008d3ce90e30e347f184d6394f96f04dae3c (patch)
treebc5715c826f0a37bb30d3060848ef0cf03eca418 /src
parent0a20c80c9cee34a71b975bb37ac811bd339eaf9f (diff)
downloademacs-f2d3008d3ce90e30e347f184d6394f96f04dae3c.tar.gz
emacs-f2d3008d3ce90e30e347f184d6394f96f04dae3c.zip
* alloc.c (SDATA_SIZE) [!GC_CHECK_STRING_BYTES]: Avoid runtime check
in the common case where SDATA_DATA_OFFSET is a multiple of Emacs word size.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog4
-rw-r--r--src/alloc.c16
2 files changed, 16 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 7a97a066f12..480d163d18d 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,9 @@
12011-04-19 Paul Eggert <eggert@cs.ucla.edu> 12011-04-19 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 * alloc.c (SDATA_SIZE) [!GC_CHECK_STRING_BYTES]: Avoid runtime check
4 in the common case where SDATA_DATA_OFFSET is a multiple of Emacs
5 word size.
6
3 * gnutls.c: Fix problems found by GCC 4.6.0 on Ubuntu 10.10. 7 * gnutls.c: Fix problems found by GCC 4.6.0 on Ubuntu 10.10.
4 (gnutls_make_error): Rename local to avoid shadowing. 8 (gnutls_make_error): Rename local to avoid shadowing.
5 (gnutls_emacs_global_deinit): ifdef out; not used. 9 (gnutls_emacs_global_deinit): ifdef out; not used.
diff --git a/src/alloc.c b/src/alloc.c
index 82be8a903b4..8be6371d247 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -1643,10 +1643,18 @@ static char const string_overrun_cookie[GC_STRING_OVERRUN_COOKIE_SIZE] =
1643 1643
1644#else /* not GC_CHECK_STRING_BYTES */ 1644#else /* not GC_CHECK_STRING_BYTES */
1645 1645
1646#define SDATA_SIZE(NBYTES) \ 1646/* The 'max' reserves space for the nbytes union member even when NBYTES + 1 is
1647 ((SDATA_DATA_OFFSET \ 1647 less than the size of that member. The 'max' is not needed when
1648 + max (NBYTES, sizeof (EMACS_INT) - 1) + 1 \ 1648 SDATA_DATA_OFFSET is a multiple of sizeof (EMACS_INT), because then the
1649 + sizeof (EMACS_INT) - 1) \ 1649 alignment code reserves enough space. */
1650
1651#define SDATA_SIZE(NBYTES) \
1652 ((SDATA_DATA_OFFSET \
1653 + (SDATA_DATA_OFFSET % sizeof (EMACS_INT) == 0 \
1654 ? NBYTES \
1655 : max (NBYTES, sizeof (EMACS_INT) - 1)) \
1656 + 1 \
1657 + sizeof (EMACS_INT) - 1) \
1650 & ~(sizeof (EMACS_INT) - 1)) 1658 & ~(sizeof (EMACS_INT) - 1))
1651 1659
1652#endif /* not GC_CHECK_STRING_BYTES */ 1660#endif /* not GC_CHECK_STRING_BYTES */