diff options
author | Sverker Eriksson <[email protected]> | 2016-10-12 16:14:51 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2016-10-12 16:14:51 +0200 |
commit | e22f99f0303bb5e70b128118bad320ee9368e4ba (patch) | |
tree | aa190baa36654776bb4d3f63fa6a0118684e4f3a | |
parent | 83801d03ae4e3e157862eb51179c4c154795f976 (diff) | |
download | otp-e22f99f0303bb5e70b128118bad320ee9368e4ba.tar.gz otp-e22f99f0303bb5e70b128118bad320ee9368e4ba.tar.bz2 otp-e22f99f0303bb5e70b128118bad320ee9368e4ba.zip |
erts: Add strict size assert to fix alloc
and remove outdated min size adjustment.
The is similar to lost commit 31bc414dc9639ccf94f9011ed32
except we now assume and assert strict size equality.
-rw-r--r-- | erts/emulator/beam/erl_alloc_util.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/erts/emulator/beam/erl_alloc_util.c b/erts/emulator/beam/erl_alloc_util.c index 2995f2f822..dd8ca5fac1 100644 --- a/erts/emulator/beam/erl_alloc_util.c +++ b/erts/emulator/beam/erl_alloc_util.c @@ -1361,6 +1361,7 @@ fix_cpool_alloc(Allctr_t *allctr, ErtsAlcType_t type, Uint size) && type <= ERTS_ALC_N_MAX_A_FIXED_SIZE); fix = &allctr->fix[type - ERTS_ALC_N_MIN_A_FIXED_SIZE]; + ASSERT(size == fix->type_size); res = fix->list; if (res) { @@ -1372,8 +1373,6 @@ fix_cpool_alloc(Allctr_t *allctr, ErtsAlcType_t type, Uint size) fix_cpool_check_shrink(allctr, type, fix, NULL); return res; } - if (size < 2*sizeof(UWord)) - size += sizeof(UWord); if (size >= allctr->sbc_threshold) { Block_t *blk; blk = create_carrier(allctr, size, CFLG_SBC); @@ -1493,6 +1492,7 @@ fix_nocpool_alloc(Allctr_t *allctr, ErtsAlcType_t type, Uint size) && type <= ERTS_ALC_N_MAX_A_FIXED_SIZE); fix = &allctr->fix[type - ERTS_ALC_N_MIN_A_FIXED_SIZE]; + ASSERT(size == fix->type_size); ERTS_DBG_CHK_FIX_LIST(allctr, fix, ix, 1); fix->u.nocpool.used++; @@ -1515,8 +1515,6 @@ fix_nocpool_alloc(Allctr_t *allctr, ErtsAlcType_t type, Uint size) ERTS_DBG_CHK_FIX_LIST(allctr, fix, ix, 0); return res; } - if (size < 2*sizeof(UWord)) - size += sizeof(UWord); if (fix->u.nocpool.limit < fix->u.nocpool.used) fix->u.nocpool.limit = fix->u.nocpool.used; if (fix->u.nocpool.max_used < fix->u.nocpool.used) |