aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_gc.c
diff options
context:
space:
mode:
authorhappi <[email protected]>2013-05-03 16:25:37 +0200
committerPatrik Nyblom <[email protected]>2013-06-04 17:59:48 +0200
commit6d366f0ae53669a17de96db0094ef62217b60f1b (patch)
treeed795e9521c0becd69714a2aab21968b9e8e4a59 /erts/emulator/beam/erl_gc.c
parentf7f24a77e918eea712b435a5ae9b01de270d6d7d (diff)
downloadotp-6d366f0ae53669a17de96db0094ef62217b60f1b.tar.gz
otp-6d366f0ae53669a17de96db0094ef62217b60f1b.tar.bz2
otp-6d366f0ae53669a17de96db0094ef62217b60f1b.zip
Make term_to_binary yield (trap).
Diffstat (limited to 'erts/emulator/beam/erl_gc.c')
-rw-r--r--erts/emulator/beam/erl_gc.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c
index 0d12e658d9..2c219ee87c 100644
--- a/erts/emulator/beam/erl_gc.c
+++ b/erts/emulator/beam/erl_gc.c
@@ -1964,6 +1964,15 @@ setup_rootset(Process *p, Eterm *objv, int nobj, Rootset *rootset)
++n;
}
+ // Check if a suspended bif has live working data.
+ // How do we know n is small enough to fit in roots[32?]?
+ if (p->extra_root != NULL) {
+ printf("GC with extra_root 0x%xl\n", p->extra_root);
+ roots[n].v = p->extra_root;
+ roots[n].sz = p->extra_root_sz;
+ ++n;
+ }
+
ASSERT((is_nil(p->seq_trace_token) ||
is_tuple(follow_moved(p->seq_trace_token)) ||
is_atom(p->seq_trace_token)));