static void* coalesce(void* curr){ void* prev = prev_payl…
static void* coalesce(void* curr){ void* prev = prev_payload_pointer(curr); void* next = next_payload_pointer(curr); uint64_t prev_alloc = get_alloc(get_header(prev)); uint64_t next_alloc = get_alloc(get_header(next)); uint64_t size = get_size(get_header(curr)); //case 1 if (prev_alloc && next_alloc) { return curr; } //case 2 else if (prev_alloc && !next_alloc) { size += get_size(get_header(next)); set(, pack(size, 0)); set(get_footer(next), pack(size, 0)); return ; } //case 3 else if (!prev_alloc && next_alloc) { size += get_size(get_header(prev)); set(, pack(size, 0)); set(get_footer(curr), pack(size, 0)); return ; } //case 4 else { size += get_size(get_header(prev)) + get_size(get_header(next)); set(, pack(size, 0)); set(get_footer(next), pack(size, 0)); return ; }}