diff options
author | Björn-Egil Dahlberg <[email protected]> | 2016-04-22 12:22:51 +0200 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2016-04-22 12:22:51 +0200 |
commit | 7f5c1b2084b389cdd13dd9f98adfeaf2c7d00fdc (patch) | |
tree | 73c619b61bb1786162779008867c1809205a2561 /erts/emulator/beam/erl_gc.c | |
parent | 2b0ecf4f702f720ea0861f94a833bd11b22c34d5 (diff) | |
parent | ee1cd28701589cd20f240941957f9a2fb7aadd3a (diff) | |
download | otp-7f5c1b2084b389cdd13dd9f98adfeaf2c7d00fdc.tar.gz otp-7f5c1b2084b389cdd13dd9f98adfeaf2c7d00fdc.tar.bz2 otp-7f5c1b2084b389cdd13dd9f98adfeaf2c7d00fdc.zip |
Merge branch 'egil/erts/fix-copy-share-heap'
* egil/erts/fix-copy-share-heap:
erts: Fix comments
erts: Fix copy share with onheap messages
Diffstat (limited to 'erts/emulator/beam/erl_gc.c')
-rw-r--r-- | erts/emulator/beam/erl_gc.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c index f33ade27f3..4698458521 100644 --- a/erts/emulator/beam/erl_gc.c +++ b/erts/emulator/beam/erl_gc.c @@ -2053,8 +2053,26 @@ copy_one_frag(Eterm** hpp, ErlOffHeap* off_heap, *hp++ = val; break; case TAG_PRIMARY_LIST: +#ifdef SHCOPY_SEND + if (erts_is_literal(val,list_val(val))) { + *hp++ = val; + } else { + *hp++ = offset_ptr(val, offs); + } +#else + *hp++ = offset_ptr(val, offs); +#endif + break; case TAG_PRIMARY_BOXED: - *hp++ = offset_ptr(val, offs); +#ifdef SHCOPY_SEND + if (erts_is_literal(val,boxed_val(val))) { + *hp++ = val; + } else { + *hp++ = offset_ptr(val, offs); + } +#else + *hp++ = offset_ptr(val, offs); +#endif break; case TAG_PRIMARY_HEADER: *hp++ = val; |