Commit 35f464a7 authored by Gerd Moellmann's avatar Gerd Moellmann
Browse files

(STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call

function string_bytes.
(GC_CHECK_STRING_BYTES): Moved here from alloc.c.
parent 676a7251
2001-01-09 Gerd Moellmann <gerd@gnu.org>
* lisp.h (STRING_BYTES) [GC_CHECK_STRING_BYTES]: Call
function string_bytes.
(GC_CHECK_STRING_BYTES): Moved here from alloc.c.
* alloc.c (CHECK_STRING_BYTES) [GC_CHECK_STRING_BYTES]: New macro.
(check_sblock, string_bytes) [GC_CHECK_STRING_BYTES]: New functions.
(check_string_bytes) [GC_CHECK_STRING_BYTES]: Add parameter ALL_P.
(allocate_string) [GC_CHECK_STRING_BYTES]: Always check strings in
the current sblock.
(mark_object) [GC_CHECK_STRING_BYTES]: Use CHECK_STRING_BYTES.
(gc_sweep) [GC_CHECK_STRING_BYTES]: Call check_string_bytes
after sweeping strings, and at the end.
(GC_CHECK_STRING_BYTES): Moved to lisp.h.
* alloc.c (Fgarbage_collect): Use a record_unwind_protect to
ensure that pop_message is called.
......
......@@ -26,6 +26,12 @@ Boston, MA 02111-1307, USA. */
#define P_(proto) ()
#endif
/* Define this temporarily to hunt a bug. If defined, the size of
strings is redundantly recorded in sdata structures so that it can
be compared to the sizes recorded in Lisp strings. */
#define GC_CHECK_STRING_BYTES 1
/* These are default choices for the types to use. */
#ifdef _LP64
......@@ -620,9 +626,20 @@ struct Lisp_Cons
(XSTRING (STR)->size_byte >= 0)
/* Return the length in bytes of STR. */
#ifdef GC_CHECK_STRING_BYTES
struct Lisp_String;
extern int string_bytes P_ ((struct Lisp_String *));
#define STRING_BYTES(S) string_bytes ((S))
#else /* not GC_CHECK_STRING_BYTES */
#define STRING_BYTES(STR) \
((STR)->size_byte < 0 ? (STR)->size : (STR)->size_byte)
#endif /* not GC_CHECK_STRING_BYTES */
/* Set the length in bytes of STR. */
#define SET_STRING_BYTES(STR, SIZE) ((STR)->size_byte = (SIZE))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment