aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/hipe
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2012-01-11 19:02:01 +0100
committerSverker Eriksson <[email protected]>2012-01-11 19:02:01 +0100
commitaf99d9a501ede4af09517f27dde2897577aaba4a (patch)
treef6b1c5e6e2f7699eba246bd45695eafb32ebd127 /erts/emulator/hipe
parentabdafb962fb1387d1c3cac95be1c524026e6067a (diff)
parent9a939eb85807b41aaaeff795293a6de5a29870bd (diff)
downloadotp-af99d9a501ede4af09517f27dde2897577aaba4a.tar.gz
otp-af99d9a501ede4af09517f27dde2897577aaba4a.tar.bz2
otp-af99d9a501ede4af09517f27dde2897577aaba4a.zip
Merge branch 'sverk/hipe-hibernate-sparc-bug' into maint
* sverk/hipe-hibernate-sparc-bug: erts: Make GC tolerate hibernated process without hipe stack
Diffstat (limited to 'erts/emulator/hipe')
-rw-r--r--erts/emulator/hipe/hipe_gc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/erts/emulator/hipe/hipe_gc.c b/erts/emulator/hipe/hipe_gc.c
index 0199dea99e..e0575c35ff 100644
--- a/erts/emulator/hipe/hipe_gc.c
+++ b/erts/emulator/hipe/hipe_gc.c
@@ -46,9 +46,14 @@ Eterm *fullsweep_nstack(Process *p, Eterm *n_htop)
char *src, *oh;
Uint src_size, oh_size;
+ if (!p->hipe.nstack) {
+ ASSERT(!p->hipe.nsp && !p->hipe.nstend);
+ return n_htop;
+ }
if (!nstack_walk_init_check(p))
return n_htop;
+ ASSERT(p->hipe.nsp && p->hipe.nstend);
nsp = nstack_walk_nsp_begin(p);
nsp_end = p->hipe.nstgraylim;
if (nsp_end)
@@ -136,9 +141,14 @@ void gensweep_nstack(Process *p, Eterm **ptr_old_htop, Eterm **ptr_n_htop)
char *heap;
Uint heap_size, mature_size;
+ if (!p->hipe.nstack) {
+ ASSERT(!p->hipe.nsp && !p->hipe.nstend);
+ return;
+ }
if (!nstack_walk_init_check(p))
return;
+ ASSERT(p->hipe.nsp && p->hipe.nstend);
nsp = nstack_walk_nsp_begin(p);
nsp_end = p->hipe.nstgraylim;
if (nsp_end) {