From 2b4707d10b6ea5656242f5ae8506969c921ac841 Mon Sep 17 00:00:00 2001 From: Patrik Nyblom Date: Thu, 6 Jun 2013 08:20:20 +0200 Subject: Teach erl_gc:offset_rootset about extra_root --- erts/emulator/beam/erl_gc.c | 6 ++++++ erts/emulator/beam/external.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'erts') diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c index da0f46e556..7b463958d2 100644 --- a/erts/emulator/beam/erl_gc.c +++ b/erts/emulator/beam/erl_gc.c @@ -2555,6 +2555,12 @@ offset_one_rootset(Process *p, Sint offs, char* area, Uint area_size, p->dictionary->used, offs, area, area_size); } + if (p->extra_root != NULL) { + offset_heap_ptr(p->extra_root->objv, + p->extra_root->sz, + offs, area, area_size); + } + offset_heap_ptr(&p->fvalue, 1, offs, area, area_size); offset_heap_ptr(&p->ftrace, 1, offs, area, area_size); offset_heap_ptr(&p->seq_trace_token, 1, offs, area, area_size); diff --git a/erts/emulator/beam/external.c b/erts/emulator/beam/external.c index 8a1e89afb4..de2aacfa7b 100644 --- a/erts/emulator/beam/external.c +++ b/erts/emulator/beam/external.c @@ -2149,7 +2149,7 @@ enc_term_int(Process *p,ErtsAtomCacheMap *acmp, Eterm obj, byte* ep, Uint32 dfla ESTACK_PUSH(s,obj); /* push back current object, to be popped on restore */ WSTACK_PUSH(com,((UWord) ep)); if (p->extra_root == NULL) { - /* NB. Allocate an arroy of two "extra-roots", of which only the first element + /* NB. Allocate an array of two "extra-roots", of which only the first element is seen and handled by the GC. Index 1 holds the Wstack. */ p->extra_root = erts_alloc(ERTS_ALC_T_EXTRA_ROOT, sizeof(ErlExtraRootSet)*2); p->extra_root->objv = NULL; -- cgit v1.2.3