diff options
author | Lukas Larsson <[email protected]> | 2016-09-06 09:56:53 +0200 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2016-09-06 09:56:53 +0200 |
commit | 64a986cda04f70cc071e047ea3ae19e324ea6397 (patch) | |
tree | b29aaa78db2b90d51889888cdbaa5e5b4b49c4b2 /erts/emulator/beam/bif.c | |
parent | 678238add716b10731688de4d9e4144d04e0a55d (diff) | |
parent | 99701ee7b52f5010da7c8540bbb35481bee053bf (diff) | |
download | otp-64a986cda04f70cc071e047ea3ae19e324ea6397.tar.gz otp-64a986cda04f70cc071e047ea3ae19e324ea6397.tar.bz2 otp-64a986cda04f70cc071e047ea3ae19e324ea6397.zip |
Merge branch 'kvakvs/erts/gc_minor_option/OTP-11695'
* kvakvs/erts/gc_minor_option/OTP-11695:
erts: Fix req_system_task gc typespec
Fix process_SUITE system_task_blast and no_priority_inversion2
Option to erlang:garbage_collect to request minor (generational) GC
Conflicts:
erts/emulator/beam/erl_process.c
erts/preloaded/src/erts_internal.erl
Diffstat (limited to 'erts/emulator/beam/bif.c')
-rw-r--r-- | erts/emulator/beam/bif.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/erts/emulator/beam/bif.c b/erts/emulator/beam/bif.c index d9048065c8..84eab5f651 100644 --- a/erts/emulator/beam/bif.c +++ b/erts/emulator/beam/bif.c @@ -3869,7 +3869,24 @@ BIF_RETTYPE garbage_collect_0(BIF_ALIST_0) { FLAGS(BIF_P) |= F_NEED_FULLSWEEP; erts_garbage_collect(BIF_P, 0, NULL, 0); - BIF_RET(am_true); + return am_true; +} + +/* + * Pass atom 'minor' for relaxed generational GC run. This is only + * recommendation, major run may still be chosen by VM. + * Pass atom 'major' for default behaviour - major GC run (fullsweep) + */ +BIF_RETTYPE +erts_internal_garbage_collect_1(BIF_ALIST_1) +{ + switch (BIF_ARG_1) { + case am_minor: break; + case am_major: FLAGS(BIF_P) |= F_NEED_FULLSWEEP; break; + default: BIF_ERROR(BIF_P, BADARG); + } + erts_garbage_collect(BIF_P, 0, NULL, 0); + return am_true; } /**********************************************************************/ |