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 { \