diff options
| author | Jason Evans <jasone@canonware.com> | 2016-11-07 18:52:44 (GMT) |
|---|---|---|
| committer | Jason Evans <jasone@canonware.com> | 2016-11-07 18:52:44 (GMT) |
| commit | 04b463546e57ecd9ebc334739881a1c69623813a (patch) | |
| tree | aab9e1d85e76d6cea1aa9dde7ea338c3b877f36c /src | |
| parent | e0a9e78374f56bc7a27258ced08d89bfc436d8af (diff) | |
| download | jemalloc-04b463546e57ecd9ebc334739881a1c69623813a.zip jemalloc-04b463546e57ecd9ebc334739881a1c69623813a.tar.gz jemalloc-04b463546e57ecd9ebc334739881a1c69623813a.tar.bz2 | |
Refactor prng to not use 64-bit atomics on 32-bit platforms.
This resolves #495.
Diffstat (limited to 'src')
| -rw-r--r-- | src/arena.c | 6 | ||||
| -rw-r--r-- | src/ckh.c | 8 | ||||
| -rw-r--r-- | src/prof.c | 2 |
3 files changed, 8 insertions, 8 deletions
diff --git a/src/arena.c b/src/arena.c index dd8e4d9..4b104a0 100644 --- a/src/arena.c +++ b/src/arena.c @@ -422,8 +422,8 @@ arena_decay_deadline_init(arena_t *arena) if (arena->decay.time > 0) { nstime_t jitter; - nstime_init(&jitter, prng_range(&arena->decay.jitter_state, - nstime_ns(&arena->decay.interval), false)); + nstime_init(&jitter, prng_range_u64(&arena->decay.jitter_state, + nstime_ns(&arena->decay.interval))); nstime_add(&arena->decay.deadline, &jitter); } } @@ -1680,7 +1680,7 @@ arena_new(tsdn_t *tsdn, unsigned ind) * deterministic seed. */ arena->offset_state = config_debug ? ind : - (uint64_t)(uintptr_t)arena; + (size_t)(uintptr_t)arena; } arena->dss_prec = extent_dss_prec_get(); @@ -99,8 +99,8 @@ ckh_try_bucket_insert(ckh_t *ckh, size_t bucket, const void *key, * Cycle through the cells in the bucket, starting at a random position. * The randomness avoids worst-case search overhead as buckets fill up. */ - offset = (unsigned)prng_lg_range(&ckh->prng_state, LG_CKH_BUCKET_CELLS, - false); + offset = (unsigned)prng_lg_range_u64(&ckh->prng_state, + LG_CKH_BUCKET_CELLS); for (i = 0; i < (ZU(1) << LG_CKH_BUCKET_CELLS); i++) { cell = &ckh->tab[(bucket << LG_CKH_BUCKET_CELLS) + ((i + offset) & ((ZU(1) << LG_CKH_BUCKET_CELLS) - 1))]; @@ -142,8 +142,8 @@ ckh_evict_reloc_insert(ckh_t *ckh, size_t argbucket, void const **argkey, * were an item for which both hashes indicated the same * bucket. */ - i = (unsigned)prng_lg_range(&ckh->prng_state, - LG_CKH_BUCKET_CELLS, false); + i = (unsigned)prng_lg_range_u64(&ckh->prng_state, + LG_CKH_BUCKET_CELLS); cell = &ckh->tab[(bucket << LG_CKH_BUCKET_CELLS) + i]; assert(cell->key != NULL); @@ -878,7 +878,7 @@ prof_sample_threshold_update(prof_tdata_t *tdata) * pp 500 * (http://luc.devroye.org/rnbookindex.html) */ - r = prng_lg_range(&tdata->prng_state, 53, false); + r = prng_lg_range_u64(&tdata->prng_state, 53); u = (double)r * (1.0/9007199254740992.0L); tdata->bytes_until_sample = (uint64_t)(log(u) / log(1.0 - (1.0 / (double)((uint64_t)1U << lg_prof_sample)))) |
