aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_ao_firstfit_alloc.c
diff options
context:
space:
mode:
authorJohn Högberg <[email protected]>2018-06-21 17:48:35 +0200
committerJohn Högberg <[email protected]>2018-06-28 09:06:43 +0200
commit29ce7ab0e4403fa688d1e5e5e2170e88d7e8f299 (patch)
tree5f9c9b8e3f07d1a249c2796416ba45c4bea5ab13 /erts/emulator/beam/erl_ao_firstfit_alloc.c
parentc67615343b8ab10f10ffc40eccc24c6ec36cd9cd (diff)
downloadotp-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.c16
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);