aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/beam_bif_load.c
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2016-07-29 14:45:21 +0200
committerBjörn-Egil Dahlberg <[email protected]>2016-07-29 14:45:21 +0200
commit26bb8c8a2abf40e1504dfeac3e74b3582ea1877b (patch)
tree40f569083f347859e1e878beb8d33de84591cd69 /erts/emulator/beam/beam_bif_load.c
parent18d328f9e2275d13a1d469016916f7261a612951 (diff)
parentf0131c58c42a286c8b3f611b47106393a37197b6 (diff)
downloadotp-26bb8c8a2abf40e1504dfeac3e74b3582ea1877b.tar.gz
otp-26bb8c8a2abf40e1504dfeac3e74b3582ea1877b.tar.bz2
otp-26bb8c8a2abf40e1504dfeac3e74b3582ea1877b.zip
Merge branch 'margnus1/erts/fix-hipe-literal-gc/PR-1122/OTP-13777' into maint
* margnus1/erts/fix-hipe-literal-gc/PR-1122/OTP-13777: check_process_code: Sweep HiPE stack for literals
Diffstat (limited to 'erts/emulator/beam/beam_bif_load.c')
-rw-r--r--erts/emulator/beam/beam_bif_load.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/erts/emulator/beam/beam_bif_load.c b/erts/emulator/beam/beam_bif_load.c
index 15e878ba65..92815b2bcd 100644
--- a/erts/emulator/beam/beam_bif_load.c
+++ b/erts/emulator/beam/beam_bif_load.c
@@ -37,6 +37,10 @@
#include "erl_bits.h"
#include "erl_thr_progress.h"
+#ifdef HIPE
+# include "hipe_stack.h"
+#endif
+
static void set_default_trace_pattern(Eterm module);
static Eterm check_process_code(Process* rp, Module* modp, Uint flags, int *redsp, int fcalls);
static void delete_code(Module* modp);
@@ -916,6 +920,10 @@ check_process_code(Process* rp, Module* modp, Uint flags, int *redsp, int fcalls
}
if (any_heap_ref_ptrs(rp->stop, rp->hend, literals, lit_bsize))
goto try_literal_gc;
+#ifdef HIPE
+ if (nstack_any_heap_ref_ptrs(rp, literals, lit_bsize))
+ goto try_literal_gc;
+#endif
if (any_heap_refs(rp->heap, rp->htop, literals, lit_bsize))
goto try_literal_gc;
if (any_heap_refs(rp->old_heap, rp->old_htop, literals, lit_bsize))