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 /erts/emulator | |
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.
Diffstat (limited to 'erts/emulator')
-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) |