diff options
author | Björn-Egil Dahlberg <[email protected]> | 2016-07-29 14:45:21 +0200 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2016-07-29 14:45:21 +0200 |
commit | 26bb8c8a2abf40e1504dfeac3e74b3582ea1877b (patch) | |
tree | 40f569083f347859e1e878beb8d33de84591cd69 /erts/emulator/hipe/hipe_x86_gc.h | |
parent | 18d328f9e2275d13a1d469016916f7261a612951 (diff) | |
parent | f0131c58c42a286c8b3f611b47106393a37197b6 (diff) | |
download | otp-26bb8c8a2abf40e1504dfeac3e74b3582ea1877b.tar.gz otp-26bb8c8a2abf40e1504dfeac3e74b3582ea1877b.tar.bz2 otp-26bb8c8a2abf40e1504dfeac3e74b3582ea1877b.zip |
Merge branch 'margnus1/erts/fix-hipe-literal-gc/PR-1122/OTP-13777' into maint
* margnus1/erts/fix-hipe-literal-gc/PR-1122/OTP-13777:
check_process_code: Sweep HiPE stack for literals
Diffstat (limited to 'erts/emulator/hipe/hipe_x86_gc.h')
-rw-r--r-- | erts/emulator/hipe/hipe_x86_gc.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/erts/emulator/hipe/hipe_x86_gc.h b/erts/emulator/hipe/hipe_x86_gc.h index c22b28c2d5..00fe03d8f9 100644 --- a/erts/emulator/hipe/hipe_x86_gc.h +++ b/erts/emulator/hipe/hipe_x86_gc.h @@ -81,6 +81,23 @@ nstack_walk_init_sdesc(const Process *p, struct nstack_walk_state *state) #endif } +static inline const struct sdesc* +nstack_walk_init_sdesc_ignore_trap(const Process *p, + struct nstack_walk_state *state) +{ +#ifdef SKIP_YOUNGEST_FRAME + unsigned long ra = p->hipe.nsp[0]; + const struct sdesc *sdesc; + if (ra == (unsigned long)nbif_stack_trap_ra) + ra = (unsigned long)p->hipe.ngra; + sdesc = hipe_find_sdesc(ra); + state->sdesc0 = sdesc; + return sdesc; +#else + return nstack_walk_init_sdesc(p, state); +#endif +} + static inline void nstack_walk_update_trap(Process *p, const struct sdesc *sdesc0) { #ifdef SKIP_YOUNGEST_FRAME |