aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_gc.c
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2016-11-23 14:15:55 +0100
committerRickard Green <[email protected]>2016-11-23 14:15:55 +0100
commit2b663d3ff96c74fa87be1120f3cd8960318080a1 (patch)
tree24eb224fe6335671596d7c490bd2255863035393 /erts/emulator/beam/erl_gc.c
parent9cac4f15d84a7682f17dee01c0ce4a12bac5d9ff (diff)
parentad94a4bdb24c93d3cafc7351c4c98f346a5f53cc (diff)
downloadotp-2b663d3ff96c74fa87be1120f3cd8960318080a1.tar.gz
otp-2b663d3ff96c74fa87be1120f3cd8960318080a1.tar.bz2
otp-2b663d3ff96c74fa87be1120f3cd8960318080a1.zip
Merge branch 'rickard/nif-scheduling-fixes' into maint
* rickard/nif-scheduling-fixes: Fix check_process_code() when NifExport is in use - OTP-14048 Fix GC when NifExport is in use - OTP-14049 Fix saving of original arguments when rescheduling via NifExport - OTP-14050
Diffstat (limited to 'erts/emulator/beam/erl_gc.c')
-rw-r--r--erts/emulator/beam/erl_gc.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c
index 6f641a1ea7..af799d09da 100644
--- a/erts/emulator/beam/erl_gc.c
+++ b/erts/emulator/beam/erl_gc.c
@@ -2325,6 +2325,11 @@ move_msgq_to_heap(Process *p)
static Uint
setup_rootset(Process *p, Eterm *objv, int nobj, Rootset *rootset)
{
+ /*
+ * NOTE!
+ * Remember to update offset_rootset() when changing
+ * this function.
+ */
Roots* roots;
Uint n;
@@ -2969,6 +2974,12 @@ offset_one_rootset(Process *p, Sint offs, char* area, Uint area_size,
offset_heap_ptr(objv, nobj, offs, area, area_size);
}
offset_off_heap(p, offs, area, area_size);
+ if (ERTS_PROC_GET_NIF_TRAP_EXPORT(p)) {
+ Eterm* argv;
+ int argc;
+ if (erts_setup_nif_gc(p, &argv, &argc))
+ offset_heap_ptr(argv, argc, offs, area, area_size);
+ }
}
static void