mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-18 10:10:23 +02:00
Change gc_allocate_ephemeron to return struct gc_ephemeron
This commit is contained in:
parent
db36c48efd
commit
dc013cfb58
5 changed files with 10 additions and 11 deletions
|
@ -18,7 +18,7 @@ struct gc_mutator;
|
|||
struct gc_ephemeron;
|
||||
|
||||
GC_API_ size_t gc_ephemeron_size(void);
|
||||
GC_API_ struct gc_ref gc_allocate_ephemeron(struct gc_mutator *mut);
|
||||
GC_API_ struct gc_ephemeron* gc_allocate_ephemeron(struct gc_mutator *mut);
|
||||
GC_API_ void gc_ephemeron_init(struct gc_mutator *mut,
|
||||
struct gc_ephemeron *ephemeron,
|
||||
struct gc_ref key, struct gc_ref value);
|
||||
|
|
|
@ -25,9 +25,9 @@ static Box* allocate_box(struct gc_mutator *mut) {
|
|||
}
|
||||
|
||||
static struct gc_ephemeron* allocate_ephemeron(struct gc_mutator *mut) {
|
||||
struct gc_ref ret = gc_allocate_ephemeron(mut);
|
||||
*tag_word(ret) = tag_live(ALLOC_KIND_EPHEMERON);
|
||||
return gc_ref_heap_object(ret);
|
||||
struct gc_ephemeron *ret = gc_allocate_ephemeron(mut);
|
||||
*tag_word(gc_ref_from_heap_object(ret)) = tag_live(ALLOC_KIND_EPHEMERON);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Get the current time in microseconds */
|
||||
|
|
|
@ -131,9 +131,8 @@ void gc_write_barrier_extern(struct gc_ref obj, size_t obj_size,
|
|||
|
||||
static int ephemeron_gc_kind;
|
||||
|
||||
struct gc_ref gc_allocate_ephemeron(struct gc_mutator *mut) {
|
||||
void *ret = GC_generic_malloc(gc_ephemeron_size(), ephemeron_gc_kind);
|
||||
return gc_ref_from_heap_object(ret);
|
||||
struct gc_ephemeron* gc_allocate_ephemeron(struct gc_mutator *mut) {
|
||||
return GC_generic_malloc(gc_ephemeron_size(), ephemeron_gc_kind);
|
||||
}
|
||||
|
||||
unsigned gc_heap_ephemeron_trace_epoch(struct gc_heap *heap) {
|
||||
|
|
|
@ -445,8 +445,8 @@ void* gc_allocate_pointerless(struct gc_mutator *mut, size_t size) {
|
|||
return gc_allocate(mut, size);
|
||||
}
|
||||
|
||||
struct gc_ref gc_allocate_ephemeron(struct gc_mutator *mut) {
|
||||
return gc_ref_from_heap_object(gc_allocate(mut, gc_ephemeron_size()));
|
||||
struct gc_ephemeron* gc_allocate_ephemeron(struct gc_mutator *mut) {
|
||||
return gc_allocate(mut, gc_ephemeron_size());
|
||||
}
|
||||
|
||||
void gc_ephemeron_init(struct gc_mutator *mut, struct gc_ephemeron *ephemeron,
|
||||
|
|
|
@ -2200,14 +2200,14 @@ void* gc_allocate_pointerless(struct gc_mutator *mut, size_t size) {
|
|||
return gc_allocate(mut, size);
|
||||
}
|
||||
|
||||
struct gc_ref gc_allocate_ephemeron(struct gc_mutator *mut) {
|
||||
struct gc_ephemeron* gc_allocate_ephemeron(struct gc_mutator *mut) {
|
||||
struct gc_ref ret =
|
||||
gc_ref_from_heap_object(gc_allocate(mut, gc_ephemeron_size()));
|
||||
if (gc_has_conservative_intraheap_edges()) {
|
||||
uint8_t *metadata = metadata_byte_for_addr(gc_ref_value(ret));
|
||||
*metadata |= METADATA_BYTE_EPHEMERON;
|
||||
}
|
||||
return ret;
|
||||
return gc_ref_heap_object(ret);
|
||||
}
|
||||
|
||||
void gc_ephemeron_init(struct gc_mutator *mut, struct gc_ephemeron *ephemeron,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue