aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/bif.c
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2016-09-06 09:56:53 +0200
committerLukas Larsson <[email protected]>2016-09-06 09:56:53 +0200
commit64a986cda04f70cc071e047ea3ae19e324ea6397 (patch)
treeb29aaa78db2b90d51889888cdbaa5e5b4b49c4b2 /erts/emulator/beam/bif.c
parent678238add716b10731688de4d9e4144d04e0a55d (diff)
parent99701ee7b52f5010da7c8540bbb35481bee053bf (diff)
downloadotp-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.c19
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;
}
/**********************************************************************/