Changeset 3667
- Timestamp:
- 04/03/05 16:43:58 (4 years ago)
- Files:
-
- branches/2.2/src/ChangeLog.Meadow (modified) (1 diff)
- branches/2.2/src/alloc.c (modified) (7 diffs)
- branches/2.2/src/lisp.h (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/2.2/src/ChangeLog.Meadow
r3666 r3667 1 1 2005-04-03 MIYOSHI Masanori <miyoshi@meadowy.org> 2 2 3 * alloc.c (MARK_STRING): Sync up with Emacs CVS HEAD. 4 (UNMARK_STRING): Ditto. 5 (STRING_MARKED_P): Ditto. 6 (GC_STRING_BYTES): Ditto. 7 (GC_STRING_CHARS): Ditto. 8 (string_bytes): Ditto. 9 (init_float): Ditto. 10 (init_cons): Ditto. 11 (init_symbol): Ditto. 12 (init_marker): Ditto. 13 3 14 * lisp.h: Sync up with Emacs CVS HEAD. 15 16 2005-04-03 MIYOSHI Masanori <miyoshi@meadowy.org> 4 17 5 18 * keyboard.c: New external lisp object `Vthrow_on_input'. branches/2.2/src/alloc.c
r3665 r3667 142 142 to a struct Lisp_String. */ 143 143 144 #define MARK_STRING(S) ((S)->size |= MARKBIT)145 #define UNMARK_STRING(S) ((S)->size &= ~ MARKBIT)146 #define STRING_MARKED_P(S) (((S)->size & MARKBIT) != 0)144 #define MARK_STRING(S) ((S)->size |= ARRAY_MARK_FLAG) 145 #define UNMARK_STRING(S) ((S)->size &= ~ARRAY_MARK_FLAG) 146 #define STRING_MARKED_P(S) (((S)->size & ARRAY_MARK_FLAG) != 0) 147 147 148 148 #define VECTOR_MARK(V) ((V)->size |= ARRAY_MARK_FLAG) … … 155 155 strings. */ 156 156 157 #define GC_STRING_BYTES(S) (STRING_BYTES (S) & ~MARKBIT)158 #define GC_STRING_CHARS(S) ((S)->size & ~ MARKBIT)157 #define GC_STRING_BYTES(S) (STRING_BYTES (S)) 158 #define GC_STRING_CHARS(S) ((S)->size & ~ARRAY_MARK_FLAG) 159 159 160 160 /* Number of bytes of consing done since the last gc. */ … … 1754 1754 struct Lisp_String *s; 1755 1755 { 1756 int nbytes = (s->size_byte < 0 ? s->size : s->size_byte) & ~MARKBIT;1756 int nbytes = (s->size_byte < 0 ? s->size & ~ARRAY_MARK_FLAG : s->size_byte); 1757 1757 if (!PURE_POINTER_P (s) 1758 1758 && s->data … … 2514 2514 init_float () 2515 2515 { 2516 float_block = (struct float_block *) lisp_malloc (sizeof *float_block, 2517 MEM_TYPE_FLOAT); 2518 float_block->next = 0; 2519 bzero ((char *) float_block->floats, sizeof float_block->floats); 2520 float_block_index = 0; 2516 float_block = NULL; 2517 float_block_index = FLOAT_BLOCK_SIZE; /* Force alloc of new float_block. */ 2521 2518 float_free_list = 0; 2522 n_float_blocks = 1;2519 n_float_blocks = 0; 2523 2520 } 2524 2521 … … 2626 2623 init_cons () 2627 2624 { 2628 cons_block = (struct cons_block *) lisp_malloc (sizeof *cons_block, 2629 MEM_TYPE_CONS); 2630 cons_block->next = 0; 2631 bzero ((char *) cons_block->conses, sizeof cons_block->conses); 2632 cons_block_index = 0; 2625 cons_block = NULL; 2626 cons_block_index = CONS_BLOCK_SIZE; /* Force alloc of new cons_block. */ 2633 2627 cons_free_list = 0; 2634 n_cons_blocks = 1;2628 n_cons_blocks = 0; 2635 2629 } 2636 2630 … … 3115 3109 init_symbol () 3116 3110 { 3117 symbol_block = (struct symbol_block *) lisp_malloc (sizeof *symbol_block, 3118 MEM_TYPE_SYMBOL); 3119 symbol_block->next = 0; 3120 bzero ((char *) symbol_block->symbols, sizeof symbol_block->symbols); 3121 symbol_block_index = 0; 3111 symbol_block = NULL; 3112 symbol_block_index = SYMBOL_BLOCK_SIZE; 3122 3113 symbol_free_list = 0; 3123 n_symbol_blocks = 1;3114 n_symbol_blocks = 0; 3124 3115 } 3125 3116 … … 3203 3194 init_marker () 3204 3195 { 3205 marker_block = (struct marker_block *) lisp_malloc (sizeof *marker_block, 3206 MEM_TYPE_MISC); 3207 marker_block->next = 0; 3208 bzero ((char *) marker_block->markers, sizeof marker_block->markers); 3209 marker_block_index = 0; 3196 marker_block = NULL; 3197 marker_block_index = MARKER_BLOCK_SIZE; 3210 3198 marker_free_list = 0; 3211 n_marker_blocks = 1;3199 n_marker_blocks = 0; 3212 3200 } 3213 3201 branches/2.2/src/lisp.h
r3666 r3667 195 195 { 196 196 EMACS_INT val : VALBITS; 197 enum Lisp_Type type : GCTYPEBITS + 1;197 enum Lisp_Type type : GCTYPEBITS; 198 198 } s; 199 199 struct 200 200 { 201 201 EMACS_UINT val : VALBITS; 202 enum Lisp_Type type : GCTYPEBITS + 1;202 enum Lisp_Type type : GCTYPEBITS; 203 203 } u; 204 204 } … … 216 216 struct 217 217 { 218 enum Lisp_Type type : GCTYPEBITS + 1;218 enum Lisp_Type type : GCTYPEBITS; 219 219 EMACS_INT val : VALBITS; 220 220 } s; 221 221 struct 222 222 { 223 enum Lisp_Type type : GCTYPEBITS + 1;223 enum Lisp_Type type : GCTYPEBITS; 224 224 EMACS_UINT val : VALBITS; 225 225 } u; … … 256 256 are defined differently by the m- file. */ 257 257 258 #ifndef MARKBIT259 258 #define MARKBIT ((EMACS_INT) ((EMACS_UINT) 1 << (VALBITS + GCTYPEBITS))) 260 #endif /*MARKBIT */261 259 262 260 /* In the size word of a vector, this bit means the vector has been marked. */ 263 261 264 262 #ifndef ARRAY_MARK_FLAG 265 #define ARRAY_MARK_FLAG (( MARKBIT >> 1) & ~MARKBIT)263 #define ARRAY_MARK_FLAG ((EMACS_INT) ((EMACS_UINT) 1 << (VALBITS + GCTYPEBITS - 2))) 266 264 #endif /* no ARRAY_MARK_FLAG */ 267 265 … … 359 357 XCONS (tem) is the struct Lisp_Cons * pointing to the memory for that cons. */ 360 358 359 #ifdef NO_UNION_TYPE 360 361 #ifdef USE_LSB_TAG 362 361 363 #define VALMASK ((((EMACS_INT) 1) << VALBITS) - 1) 362 #define GCTYPEMASK ((((EMACS_INT) 1) << GCTYPEBITS) - 1)363 364 #ifdef NO_UNION_TYPE365 366 #ifdef USE_LSB_TAG367 364 368 365 #define XTYPE(a) ((enum Lisp_Type) ((a) >> VALBITS)) … … 378 375 positive, in which case the implementation can sometimes be faster 379 376 depending on the tagging scheme. With USE_LSB_TAG, there's no benefit. */ 380 #define XFASTINT(a) ((a) + 0)381 #define XSETFASTINT(a, b) ((a) = (b))377 #define XFASTINT(a) XINT (a) 378 #define XSETFASTINT(a, b) ((a) = make_number (b)) 382 379 383 380 #ifdef HAVE_SHM … … 398 395 #endif 399 396 #endif /* not HAVE_SHM */ 400 401 397 #else /* not USE_LSB_TAG */ 398 399 #define VALMASK ((((EMACS_INT) 1) << VALBITS) - 1) 402 400 403 401 /* One need to override this if there must be high bits set in data space … … 441 439 #define EQ(x, y) ((x) == (y)) 442 440 443 #if VALBITS + GCTYPEBITS == BITS_PER_EMACS_INT - 1444 /* Make XMARKBIT faster if mark bit is sign bit. */445 #ifndef XMARKBIT446 441 #define XMARKBIT(a) ((a) < 0) 447 #endif448 #endif /* markbit is sign bit */449 450 #ifndef XMARKBIT451 #define XMARKBIT(a) ((a) & MARKBIT)452 #endif453 454 #ifndef XSETMARKBIT455 442 #define XSETMARKBIT(a,b) ((a) = ((a) & ~MARKBIT) | ((b) ? MARKBIT : 0)) 456 #endif457 458 #ifndef XMARK459 443 #define XMARK(a) ((a) |= MARKBIT) 460 #endif461 462 #ifndef XUNMARK463 444 #define XUNMARK(a) ((a) &= ~MARKBIT) 464 #endif465 445 466 446 #else /* not NO_UNION_TYPE */ … … 505 485 506 486 #ifndef XGCTYPE 507 #define XGCTYPE(a) ((enum Lisp_Type) (((a) >> VALBITS) & GCTYPEMASK)) 487 /* The distinction does not exist now that the MARKBIT has been eliminated. */ 488 #define XGCTYPE(a) XTYPE (a) 508 489 #endif 509 490
