diff options
author | John Högberg <[email protected]> | 2018-06-21 17:48:35 +0200 |
---|---|---|
committer | John Högberg <[email protected]> | 2018-06-28 09:06:43 +0200 |
commit | 29ce7ab0e4403fa688d1e5e5e2170e88d7e8f299 (patch) | |
tree | 5f9c9b8e3f07d1a249c2796416ba45c4bea5ab13 /erts/emulator/beam/erl_ao_firstfit_alloc.c | |
parent | c67615343b8ab10f10ffc40eccc24c6ec36cd9cd (diff) | |
download | otp-29ce7ab0e4403fa688d1e5e5e2170e88d7e8f299.tar.gz otp-29ce7ab0e4403fa688d1e5e5e2170e88d7e8f299.tar.bz2 otp-29ce7ab0e4403fa688d1e5e5e2170e88d7e8f299.zip |
Add 'chaos first fit' to test mixed-order carrier migration
Diffstat (limited to 'erts/emulator/beam/erl_ao_firstfit_alloc.c')
-rw-r--r-- | erts/emulator/beam/erl_ao_firstfit_alloc.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_ao_firstfit_alloc.c b/erts/emulator/beam/erl_ao_firstfit_alloc.c index df4ae09811..0e3e4c890a 100644 --- a/erts/emulator/beam/erl_ao_firstfit_alloc.c +++ b/erts/emulator/beam/erl_ao_firstfit_alloc.c @@ -283,6 +283,22 @@ erts_aoffalc_start(AOFFAllctr_t *alc, sys_memcpy((void *) alc, (void *) &zero.allctr, sizeof(AOFFAllctr_t)); + if (aoffinit->blk_order == FF_CHAOS) { + const enum AOFFSortOrder orders[3] = {FF_AOFF, FF_AOBF, FF_BF}; + int index = init->ix % (sizeof(orders) / sizeof(orders[0])); + + ASSERT(init->alloc_no == ERTS_ALC_A_TEST); + aoffinit->blk_order = orders[index]; + } + + if (aoffinit->crr_order == FF_CHAOS) { + const enum AOFFSortOrder orders[2] = {FF_AGEFF, FF_AOFF}; + int index = init->ix % (sizeof(orders) / sizeof(orders[0])); + + ASSERT(init->alloc_no == ERTS_ALC_A_TEST); + aoffinit->crr_order = orders[index]; + } + alc->blk_order = aoffinit->blk_order; alc->crr_order = aoffinit->crr_order; allctr->mbc_header_size = sizeof(AOFF_Carrier_t); |