aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_db_tree.c
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2019-03-07 20:42:57 +0100
committerSverker Eriksson <[email protected]>2019-03-07 20:42:57 +0100
commit8dec35910330a44de3fa08573e3029f10b3aa4ae (patch)
treec40a9375b3b7623df83a7dcd34bc34959865a3d4 /erts/emulator/beam/erl_db_tree.c
parentdb6059a9217767a6e42e93cec05089c0ec977d20 (diff)
downloadotp-8dec35910330a44de3fa08573e3029f10b3aa4ae.tar.gz
otp-8dec35910330a44de3fa08573e3029f10b3aa4ae.tar.bz2
otp-8dec35910330a44de3fa08573e3029f10b3aa4ae.zip
erts: Remove ets traversal yielding if heap fragment
Many heap fragments do no longer make the GC slow. Even worse, we are not guaranteed that a yield will provoke a GC removing the fragments, which might lead to a one-yield-per-bucket scenario if the heap fragment(s) still remains after each yield.
Diffstat (limited to 'erts/emulator/beam/erl_db_tree.c')
-rw-r--r--erts/emulator/beam/erl_db_tree.c14
1 files changed, 0 insertions, 14 deletions
diff --git a/erts/emulator/beam/erl_db_tree.c b/erts/emulator/beam/erl_db_tree.c
index 7c80e92e50..f222ac45ae 100644
--- a/erts/emulator/beam/erl_db_tree.c
+++ b/erts/emulator/beam/erl_db_tree.c
@@ -3344,13 +3344,6 @@ static int doit_select(DbTableTree *tb, TreeDbTerm *this, void *ptr,
if (is_value(ret)) {
sc->accum = CONS(hp, ret, sc->accum);
}
- if (MBUF(sc->p)) {
- /*
- * Force a trap and GC if a heap fragment was created. Many heap fragments
- * make the GC slow.
- */
- sc->max = 0;
- }
if (--(sc->max) <= 0) {
return 0;
}
@@ -3407,13 +3400,6 @@ static int doit_select_chunk(DbTableTree *tb, TreeDbTerm *this, void *ptr,
++(sc->got);
sc->accum = CONS(hp, ret, sc->accum);
}
- if (MBUF(sc->p)) {
- /*
- * Force a trap and GC if a heap fragment was created. Many heap fragments
- * make the GC slow.
- */
- sc->max = 0;
- }
if (--(sc->max) <= 0 || sc->got == sc->chunk_size) {
return 0;
}