diff options
author | Rickard Green <[email protected]> | 2016-11-23 14:15:55 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2016-11-23 14:15:55 +0100 |
commit | 2b663d3ff96c74fa87be1120f3cd8960318080a1 (patch) | |
tree | 24eb224fe6335671596d7c490bd2255863035393 /erts/emulator/beam/erl_gc.c | |
parent | 9cac4f15d84a7682f17dee01c0ce4a12bac5d9ff (diff) | |
parent | ad94a4bdb24c93d3cafc7351c4c98f346a5f53cc (diff) | |
download | otp-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.c | 11 |
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 |