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/beam_bif_load.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/beam_bif_load.c')
-rw-r--r-- | erts/emulator/beam/beam_bif_load.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/erts/emulator/beam/beam_bif_load.c b/erts/emulator/beam/beam_bif_load.c index 8af7703f51..ea1323d651 100644 --- a/erts/emulator/beam/beam_bif_load.c +++ b/erts/emulator/beam/beam_bif_load.c @@ -1086,6 +1086,11 @@ check_process_code(Process* rp, Module* modp, Uint flags, int *redsp, int fcalls || ErtsInArea(rp->cp, mod_start, mod_size)) { return am_true; } + + *redsp += 1; + + if (erts_check_nif_export_in_area(rp, mod_start, mod_size)) + return am_true; *redsp += (STACK_START(rp) - rp->stop) / 32; @@ -1161,6 +1166,12 @@ check_process_code(Process* rp, Module* modp, Uint flags, int *redsp, int fcalls || ErtsInArea(rp->cp, mod_start, mod_size)) { return am_true; } + + *redsp += 1; + + if (erts_check_nif_export_in_area(rp, mod_start, mod_size)) + return am_true; + /* * Check all continuation pointers stored on the stack. |