aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_gc.c
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2018-12-20 10:10:51 +0100
committerLukas Larsson <[email protected]>2018-12-20 10:10:51 +0100
commit58d4bef716136bb1681fcdd0c8502d681ccd9cd3 (patch)
treefc64c1725937b7967bd1163e9e51cb8b0ea41a1a /erts/emulator/beam/erl_gc.c
parent9aac178d30c5bad940e68a7eb8a36596df5ed903 (diff)
parent27ff974bfa155ad31dcdc338d7fecf36b08a0516 (diff)
downloadotp-58d4bef716136bb1681fcdd0c8502d681ccd9cd3.tar.gz
otp-58d4bef716136bb1681fcdd0c8502d681ccd9cd3.tar.bz2
otp-58d4bef716136bb1681fcdd0c8502d681ccd9cd3.zip
Merge branch 'lukas/erts/fix-seq_trace-reset_trace/OTP-15490' into maint
* lukas/erts/fix-seq_trace-reset_trace/OTP-15490: erts: Fix seq_trace:reset_trace dirty gc bug erts: Use sys_memcpy in copy_one_frag
Diffstat (limited to 'erts/emulator/beam/erl_gc.c')
-rw-r--r--erts/emulator/beam/erl_gc.c24
1 files changed, 3 insertions, 21 deletions
diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c
index cf44640f12..3a50b294d1 100644
--- a/erts/emulator/beam/erl_gc.c
+++ b/erts/emulator/beam/erl_gc.c
@@ -2438,27 +2438,9 @@ erts_copy_one_frag(Eterm** hpp, ErlOffHeap* off_heap,
cpy_words:
ASSERT(sz >= cpy_sz);
sz -= cpy_sz;
- while (cpy_sz >= 8) {
- cpy_sz -= 8;
- *hp++ = *fhp++;
- *hp++ = *fhp++;
- *hp++ = *fhp++;
- *hp++ = *fhp++;
- *hp++ = *fhp++;
- *hp++ = *fhp++;
- *hp++ = *fhp++;
- *hp++ = *fhp++;
- }
- switch (cpy_sz) {
- case 7: *hp++ = *fhp++;
- case 6: *hp++ = *fhp++;
- case 5: *hp++ = *fhp++;
- case 4: *hp++ = *fhp++;
- case 3: *hp++ = *fhp++;
- case 2: *hp++ = *fhp++;
- case 1: *hp++ = *fhp++;
- default: break;
- }
+ sys_memcpy(hp, fhp, cpy_sz * sizeof(Eterm));
+ hp += cpy_sz;
+ fhp += cpy_sz;
if (oh) {
/* Add to offheap list */
oh->next = off_heap->first;