aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_gc.c
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2014-08-28 21:30:44 +0200
committerRickard Green <[email protected]>2014-08-28 21:30:44 +0200
commite59ea3efb5eafcda94fec0f838f2062db47acbcd (patch)
treee86f4e1a66a18194446a294b2fe3caae1de33b02 /erts/emulator/beam/erl_gc.c
parent13758c27667f2a8859796baf0a19ca4d759390d5 (diff)
parentfeb45017da36be78d4c5784d758ede619fa7bfd3 (diff)
downloadotp-e59ea3efb5eafcda94fec0f838f2062db47acbcd.tar.gz
otp-e59ea3efb5eafcda94fec0f838f2062db47acbcd.tar.bz2
otp-e59ea3efb5eafcda94fec0f838f2062db47acbcd.zip
Merge branch 'maint'
* maint: add enif_schedule_nif() to NIF API
Diffstat (limited to 'erts/emulator/beam/erl_gc.c')
-rw-r--r--erts/emulator/beam/erl_gc.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c
index aa15d2cc57..0db42d4325 100644
--- a/erts/emulator/beam/erl_gc.c
+++ b/erts/emulator/beam/erl_gc.c
@@ -2018,6 +2018,20 @@ setup_rootset(Process *p, Eterm *objv, int nobj, Rootset *rootset)
roots[n].sz = 1;
n++;
}
+
+ /*
+ * If a NIF has saved arguments, they need to be added
+ */
+ if (ERTS_PROC_GET_NIF_TRAP_EXPORT(p)) {
+ Eterm* argv;
+ int argc;
+ if (erts_setup_nif_gc(p, &argv, &argc)) {
+ roots[n].v = argv;
+ roots[n].sz = argc;
+ n++;
+ }
+ }
+
ASSERT(n <= rootset->size);
mp = p->msg.first;