diff options
author | Rickard Green <[email protected]> | 2016-11-23 14:24:11 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2016-11-23 14:24:11 +0100 |
commit | 8d56324cbf72726e955946b9f774f8f1f1004467 (patch) | |
tree | 5e764a0b2232f7d0d34e60cfd63958532ec63b84 /erts/emulator/beam/erl_gc.c | |
parent | 7c3bdf14220b500308a14f71aa91139dece2d731 (diff) | |
parent | 8fade0888ff75fafb2abb512cfb97bcb5472fec1 (diff) | |
download | otp-8d56324cbf72726e955946b9f774f8f1f1004467.tar.gz otp-8d56324cbf72726e955946b9f774f8f1f1004467.tar.bz2 otp-8d56324cbf72726e955946b9f774f8f1f1004467.zip |
Merge branch 'maint'
* maint:
Update etp-commands for dirty schedulers
Fix scheduling of system tasks on processes executing dirty
Fix call time tracing with dirty schedulers
Fix send of exit signal to process executing dirty
Fix dirty scheduler process priority
Fix alloc-util hard-debug
Silence debug warning when no beam jump table is used with dirty schedulers
Fix check_process_code() when NifExport is in use
Fix GC when NifExport is in use
Fix saving of original arguments when rescheduling via NifExport
Conflicts:
erts/emulator/beam/beam_bif_load.c
erts/emulator/beam/erl_nif.c
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 6c752b9741..28b2b02914 100644 --- a/erts/emulator/beam/erl_gc.c +++ b/erts/emulator/beam/erl_gc.c @@ -2317,6 +2317,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; @@ -2961,6 +2966,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 |