aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/global.h
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2015-09-17 19:30:08 +0200
committerBjörn-Egil Dahlberg <[email protected]>2015-11-17 14:45:53 +0100
commit5d2d888f368ba8ca0098d8bd9936ca9d67df7d3b (patch)
tree6ce6157bfae905fa2a7f0c3b5f102dbab2ef4fa4 /erts/emulator/beam/global.h
parent748c73f1687b2375d4c607487f40036ba990c4c7 (diff)
downloadotp-5d2d888f368ba8ca0098d8bd9936ca9d67df7d3b.tar.gz
otp-5d2d888f368ba8ca0098d8bd9936ca9d67df7d3b.tar.bz2
otp-5d2d888f368ba8ca0098d8bd9936ca9d67df7d3b.zip
Copy literals in copy sharing
Diffstat (limited to 'erts/emulator/beam/global.h')
-rw-r--r--erts/emulator/beam/global.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/erts/emulator/beam/global.h b/erts/emulator/beam/global.h
index bdee20969d..f106b941ef 100644
--- a/erts/emulator/beam/global.h
+++ b/erts/emulator/beam/global.h
@@ -1062,6 +1062,7 @@ typedef struct {
Eterm shtable_default[DEF_ESTACK_SIZE];
Eterm* shtable_start;
ErtsAlcType_t shtable_alloc_type;
+ Uint literal_size;
} erts_shcopy_t;
#define INITIALIZE_SHCOPY(info) \
@@ -1069,6 +1070,7 @@ do { \
info.queue_start = info.queue_default; \
info.bitstore_start = info.bitstore_default; \
info.shtable_start = info.shtable_default; \
+ info.literal_size = 0; \
} while(0)
#define DESTROY_SHCOPY(info) \
@@ -1094,7 +1096,9 @@ Eterm copy_shared_perform(Eterm, Uint, erts_shcopy_t*, Eterm**, ErlOffHeap*, Uin
Uint size_shared(Eterm);
-Eterm copy_struct(Eterm, Uint, Eterm**, ErlOffHeap*);
+Eterm copy_struct_x(Eterm, Uint, Eterm**, ErlOffHeap*, Uint* bsz);
+#define copy_struct(Obj,Sz,HPP,OH) \
+ copy_struct_x(Obj,Sz,HPP,OH,NULL)
Eterm copy_shallow(Eterm*, Uint, Eterm**, ErlOffHeap*);
void erts_move_multi_frags(Eterm** hpp, ErlOffHeap*, ErlHeapFragment* first,