version 1.9, 2007/10/19 19:28:57 |
version 1.10, 2007/10/22 04:16:48 |
Line 2393 arena_salloc(const void *ptr) |
|
Line 2393 arena_salloc(const void *ptr) |
|
{ |
{ |
size_t ret; |
size_t ret; |
arena_chunk_t *chunk; |
arena_chunk_t *chunk; |
arena_run_t *run; |
|
arena_chunk_map_t *mapelm; |
arena_chunk_map_t *mapelm; |
unsigned pageind; |
unsigned pageind; |
|
|
Line 2408 arena_salloc(const void *ptr) |
|
Line 2407 arena_salloc(const void *ptr) |
|
pageind = (unsigned)(((uintptr_t)ptr - (uintptr_t)chunk) >> |
pageind = (unsigned)(((uintptr_t)ptr - (uintptr_t)chunk) >> |
pagesize_2pow); |
pagesize_2pow); |
mapelm = &chunk->map[pageind]; |
mapelm = &chunk->map[pageind]; |
run = (arena_run_t *)((uintptr_t)chunk + (pageind << pagesize_2pow)); |
if (mapelm->pos != 0 || ptr != (char *)((uintptr_t)chunk) + (pageind << |
if (mapelm->pos != 0 || ptr != run) { |
pagesize_2pow)) { |
|
arena_run_t *run; |
|
|
pageind -= mapelm->pos; |
pageind -= mapelm->pos; |
|
|
|
run = (arena_run_t *)((uintptr_t)chunk + (pageind << |
|
pagesize_2pow)); |
assert(run->magic == ARENA_RUN_MAGIC); |
assert(run->magic == ARENA_RUN_MAGIC); |
ret = run->bin->reg_size; |
ret = run->bin->reg_size; |
} else |
} else |
Line 2475 arena_dalloc(arena_t *arena, arena_chunk |
|
Line 2477 arena_dalloc(arena_t *arena, arena_chunk |
|
{ |
{ |
unsigned pageind; |
unsigned pageind; |
arena_chunk_map_t *mapelm; |
arena_chunk_map_t *mapelm; |
arena_run_t *run; |
|
size_t size; |
size_t size; |
|
|
assert(arena != NULL); |
assert(arena != NULL); |
Line 2487 arena_dalloc(arena_t *arena, arena_chunk |
|
Line 2488 arena_dalloc(arena_t *arena, arena_chunk |
|
pageind = (unsigned)(((uintptr_t)ptr - (uintptr_t)chunk) >> |
pageind = (unsigned)(((uintptr_t)ptr - (uintptr_t)chunk) >> |
pagesize_2pow); |
pagesize_2pow); |
mapelm = &chunk->map[pageind]; |
mapelm = &chunk->map[pageind]; |
run = (arena_run_t *)((uintptr_t)chunk + (pageind << pagesize_2pow)); |
if (mapelm->pos != 0 || ptr != (char *)((uintptr_t)chunk) + (pageind << |
if (mapelm->pos != 0 || ptr != run) { |
pagesize_2pow)) { |
|
arena_run_t *run; |
arena_bin_t *bin; |
arena_bin_t *bin; |
|
|
/* Small allocation. */ |
/* Small allocation. */ |
|
|
pageind -= mapelm->pos; |
pageind -= mapelm->pos; |
|
|
|
run = (arena_run_t *)((uintptr_t)chunk + (pageind << |
|
pagesize_2pow)); |
assert(run->magic == ARENA_RUN_MAGIC); |
assert(run->magic == ARENA_RUN_MAGIC); |
bin = run->bin; |
bin = run->bin; |
size = bin->reg_size; |
size = bin->reg_size; |