1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-06 20:20:20 +02:00

nofl space: refactor to add NOFL_METADATA_BYTE_MARK_MASK

This commit is contained in:
Andy Wingo 2025-03-05 16:08:41 +01:00
parent 8c1b98d306
commit 4d271e7492

View file

@ -237,6 +237,10 @@ enum nofl_metadata_byte {
NOFL_METADATA_BYTE_MARK_0 = 2, NOFL_METADATA_BYTE_MARK_0 = 2,
NOFL_METADATA_BYTE_MARK_1 = 4, NOFL_METADATA_BYTE_MARK_1 = 4,
NOFL_METADATA_BYTE_MARK_2 = 8, NOFL_METADATA_BYTE_MARK_2 = 8,
NOFL_METADATA_BYTE_MARK_MASK = (NOFL_METADATA_BYTE_YOUNG |
NOFL_METADATA_BYTE_MARK_0 |
NOFL_METADATA_BYTE_MARK_1 |
NOFL_METADATA_BYTE_MARK_2),
NOFL_METADATA_BYTE_END = 16, NOFL_METADATA_BYTE_END = 16,
NOFL_METADATA_BYTE_PINNED = 32, NOFL_METADATA_BYTE_PINNED = 32,
NOFL_METADATA_BYTE_LOGGED_0 = 64, NOFL_METADATA_BYTE_LOGGED_0 = 64,
@ -1420,8 +1424,7 @@ nofl_space_should_evacuate(struct nofl_space *space, uint8_t metadata_byte,
static inline int static inline int
nofl_space_set_mark_relaxed(struct nofl_space *space, uint8_t *metadata, nofl_space_set_mark_relaxed(struct nofl_space *space, uint8_t *metadata,
uint8_t byte) { uint8_t byte) {
uint8_t mask = NOFL_METADATA_BYTE_YOUNG | NOFL_METADATA_BYTE_MARK_0 uint8_t mask = NOFL_METADATA_BYTE_MARK_MASK;
| NOFL_METADATA_BYTE_MARK_1 | NOFL_METADATA_BYTE_MARK_2;
atomic_store_explicit(metadata, atomic_store_explicit(metadata,
(byte & ~mask) | space->marked_mask, (byte & ~mask) | space->marked_mask,
memory_order_relaxed); memory_order_relaxed);
@ -1430,8 +1433,7 @@ nofl_space_set_mark_relaxed(struct nofl_space *space, uint8_t *metadata,
static inline int static inline int
nofl_space_set_mark(struct nofl_space *space, uint8_t *metadata, uint8_t byte) { nofl_space_set_mark(struct nofl_space *space, uint8_t *metadata, uint8_t byte) {
uint8_t mask = NOFL_METADATA_BYTE_YOUNG | NOFL_METADATA_BYTE_MARK_0 uint8_t mask = NOFL_METADATA_BYTE_MARK_MASK;
| NOFL_METADATA_BYTE_MARK_1 | NOFL_METADATA_BYTE_MARK_2;
atomic_store_explicit(metadata, atomic_store_explicit(metadata,
(byte & ~mask) | space->marked_mask, (byte & ~mask) | space->marked_mask,
memory_order_release); memory_order_release);