X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Falloc.c;h=23a6a91d6028ca027b3141d5442d751e2d592f54;hb=a699139716d7a947173ebc9a7130cc0eead5da7f;hp=ddd884a182244eb5ef7f73b86d1574354192b260;hpb=571a24e2bfea15d37c3503414674f59e89ec9652;p=chise%2Fxemacs-chise.git- diff --git a/src/alloc.c b/src/alloc.c index ddd884a..23a6a91 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -85,8 +85,8 @@ EXFUN (Fgarbage_collect, 0); #endif #ifdef DEBUG_XEMACS -static int debug_allocation; -static int debug_allocation_backtrace_length; +static Fixnum debug_allocation; +static Fixnum debug_allocation_backtrace_length; #endif /* Number of bytes of consing done since the last gc */ @@ -447,17 +447,31 @@ disksave_object_finalization_1 (void) about expressions in src/.gdbinit. See src/.gdbinit or src/.dbxrc to see how this is used. */ -const EMACS_UINT dbg_valmask = ((1UL << VALBITS) - 1) << GCBITS; -const EMACS_UINT dbg_typemask = (1UL << GCTYPEBITS) - 1; +EMACS_UINT dbg_valmask = ((1UL << VALBITS) - 1) << GCBITS; +EMACS_UINT dbg_typemask = (1UL << GCTYPEBITS) - 1; #ifdef USE_UNION_TYPE -const unsigned char dbg_USE_UNION_TYPE = 1; +unsigned char dbg_USE_UNION_TYPE = 1; #else -const unsigned char dbg_USE_UNION_TYPE = 0; +unsigned char dbg_USE_UNION_TYPE = 0; #endif -const unsigned char dbg_valbits = VALBITS; -const unsigned char dbg_gctypebits = GCTYPEBITS; +unsigned char dbg_valbits = VALBITS; +unsigned char dbg_gctypebits = GCTYPEBITS; + +/* On some systems, the above definitions will be optimized away by + the compiler or linker unless they are referenced in some function. */ +long dbg_inhibit_dbg_symbol_deletion (void); +long +dbg_inhibit_dbg_symbol_deletion (void) +{ + return + (dbg_valmask + + dbg_typemask + + dbg_USE_UNION_TYPE + + dbg_valbits + + dbg_gctypebits); +} /* Macros turned into functions for ease of debugging. Debuggers don't know about macros! */ @@ -1043,7 +1057,7 @@ mark_vector (Lisp_Object obj) static size_t size_vector (const void *lheader) { - return FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, contents, + return FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, Lisp_Object, contents, ((Lisp_Vector *) lheader)->size); } @@ -1091,7 +1105,8 @@ static Lisp_Vector * make_vector_internal (size_t sizei) { /* no vector_next */ - size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, contents, sizei); + size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, Lisp_Object, + contents, sizei); Lisp_Vector *p = (Lisp_Vector *) alloc_lcrecord (sizem, &lrecord_vector); p->size = sizei; @@ -1254,7 +1269,8 @@ static Lisp_Bit_Vector * make_bit_vector_internal (size_t sizei) { size_t num_longs = BIT_VECTOR_LONG_STORAGE (sizei); - size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, bits, num_longs); + size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, unsigned long, + bits, num_longs); Lisp_Bit_Vector *p = (Lisp_Bit_Vector *) allocate_lisp_storage (sizem); set_lheader_implementation (&p->lheader, &lrecord_bit_vector); @@ -2035,6 +2051,10 @@ LENGTH must be a non-negative integer. Bufbyte *init_ptr = init_str; switch (len) { +#ifdef UTF2000 + case 6: *ptr++ = *init_ptr++; + case 5: *ptr++ = *init_ptr++; +#endif case 4: *ptr++ = *init_ptr++; case 3: *ptr++ = *init_ptr++; case 2: *ptr++ = *init_ptr++; @@ -2575,8 +2595,8 @@ sweep_bit_vectors_1 (Lisp_Object *prev, total_size += len; total_storage += MALLOC_OVERHEAD + - FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, bits, - BIT_VECTOR_LONG_STORAGE (len)); + FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, unsigned long, + bits, BIT_VECTOR_LONG_STORAGE (len)); num_used++; /* #### May modify next on a C_READONLY bitvector */ prev = &(bit_vector_next (v));