Mercurial > hg > xemacs-beta
comparison src/alloc.c @ 406:b8cc9ab3f761 r21-2-33
Import from CVS: tag r21-2-33
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:17:09 +0200 |
parents | 2f8bb876ab1d |
children | 697ef44129c6 |
comparison
equal
deleted
inserted
replaced
405:0e08f63c74d2 | 406:b8cc9ab3f761 |
---|---|
1080 } | 1080 } |
1081 | 1081 |
1082 static size_t | 1082 static size_t |
1083 size_vector (const void *lheader) | 1083 size_vector (const void *lheader) |
1084 { | 1084 { |
1085 return offsetof (Lisp_Vector, contents[((Lisp_Vector *) lheader)->size]); | 1085 return FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, contents, |
1086 ((Lisp_Vector *) lheader)->size); | |
1086 } | 1087 } |
1087 | 1088 |
1088 static int | 1089 static int |
1089 vector_equal (Lisp_Object obj1, Lisp_Object obj2, int depth) | 1090 vector_equal (Lisp_Object obj1, Lisp_Object obj2, int depth) |
1090 { | 1091 { |
1127 /* #### should allocate `small' vectors from a frob-block */ | 1128 /* #### should allocate `small' vectors from a frob-block */ |
1128 static Lisp_Vector * | 1129 static Lisp_Vector * |
1129 make_vector_internal (size_t sizei) | 1130 make_vector_internal (size_t sizei) |
1130 { | 1131 { |
1131 /* no vector_next */ | 1132 /* no vector_next */ |
1132 size_t sizem = offsetof (Lisp_Vector, contents[sizei]); | 1133 size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, contents, sizei); |
1133 Lisp_Vector *p = (Lisp_Vector *) alloc_lcrecord (sizem, &lrecord_vector); | 1134 Lisp_Vector *p = (Lisp_Vector *) alloc_lcrecord (sizem, &lrecord_vector); |
1134 | 1135 |
1135 p->size = sizei; | 1136 p->size = sizei; |
1136 return p; | 1137 return p; |
1137 } | 1138 } |
1290 /* #### should allocate `small' bit vectors from a frob-block */ | 1291 /* #### should allocate `small' bit vectors from a frob-block */ |
1291 static Lisp_Bit_Vector * | 1292 static Lisp_Bit_Vector * |
1292 make_bit_vector_internal (size_t sizei) | 1293 make_bit_vector_internal (size_t sizei) |
1293 { | 1294 { |
1294 size_t num_longs = BIT_VECTOR_LONG_STORAGE (sizei); | 1295 size_t num_longs = BIT_VECTOR_LONG_STORAGE (sizei); |
1295 size_t sizem = offsetof (Lisp_Bit_Vector, bits[num_longs]); | 1296 size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, bits, num_longs); |
1296 Lisp_Bit_Vector *p = (Lisp_Bit_Vector *) allocate_lisp_storage (sizem); | 1297 Lisp_Bit_Vector *p = (Lisp_Bit_Vector *) allocate_lisp_storage (sizem); |
1297 set_lheader_implementation (&p->lheader, &lrecord_bit_vector); | 1298 set_lheader_implementation (&p->lheader, &lrecord_bit_vector); |
1298 | 1299 |
1299 INCREMENT_CONS_COUNTER (sizem, "bit-vector"); | 1300 INCREMENT_CONS_COUNTER (sizem, "bit-vector"); |
1300 | 1301 |
2661 if (! C_READONLY_RECORD_HEADER_P(&(v->lheader))) | 2662 if (! C_READONLY_RECORD_HEADER_P(&(v->lheader))) |
2662 UNMARK_RECORD_HEADER (&(v->lheader)); | 2663 UNMARK_RECORD_HEADER (&(v->lheader)); |
2663 total_size += len; | 2664 total_size += len; |
2664 total_storage += | 2665 total_storage += |
2665 MALLOC_OVERHEAD + | 2666 MALLOC_OVERHEAD + |
2666 offsetof (Lisp_Bit_Vector, bits[BIT_VECTOR_LONG_STORAGE (len)]); | 2667 FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, bits, |
2668 BIT_VECTOR_LONG_STORAGE (len)); | |
2667 num_used++; | 2669 num_used++; |
2668 /* #### May modify next on a C_READONLY bitvector */ | 2670 /* #### May modify next on a C_READONLY bitvector */ |
2669 prev = &(bit_vector_next (v)); | 2671 prev = &(bit_vector_next (v)); |
2670 bit_vector = *prev; | 2672 bit_vector = *prev; |
2671 } | 2673 } |
3138 Lisp_String *p = (ptr); \ | 3140 Lisp_String *p = (ptr); \ |
3139 size_t size = string_length (p); \ | 3141 size_t size = string_length (p); \ |
3140 UNMARK_RECORD_HEADER (&(p->lheader)); \ | 3142 UNMARK_RECORD_HEADER (&(p->lheader)); \ |
3141 num_bytes += size; \ | 3143 num_bytes += size; \ |
3142 if (!BIG_STRING_SIZE_P (size)) \ | 3144 if (!BIG_STRING_SIZE_P (size)) \ |
3143 { num_small_bytes += size; \ | 3145 { \ |
3144 num_small_used++; \ | 3146 num_small_bytes += size; \ |
3147 num_small_used++; \ | |
3145 } \ | 3148 } \ |
3146 if (debug) \ | 3149 if (debug) \ |
3147 debug_string_purity_print (p); \ | 3150 debug_string_purity_print (p); \ |
3148 } while (0) | 3151 } while (0) |
3149 #define ADDITIONAL_FREE_string(ptr) do { \ | 3152 #define ADDITIONAL_FREE_string(ptr) do { \ |