diff options
author | Sverker Eriksson <[email protected]> | 2014-10-24 18:23:47 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2014-10-24 18:23:47 +0200 |
commit | 1b50468c0389adbe51883f32a73c265ef0b7605d (patch) | |
tree | 2f35d6e7bac2a1a4ae14c56ca0b649eb4c7d43de /erts/emulator/hipe/hipe_stack.h | |
parent | 389b65126d2777cf61a7995e082b00ef7a0e7778 (diff) | |
parent | da3073e8d3d26ec6c63979a22c913d7758eeed71 (diff) | |
download | otp-1b50468c0389adbe51883f32a73c265ef0b7605d.tar.gz otp-1b50468c0389adbe51883f32a73c265ef0b7605d.tar.bz2 otp-1b50468c0389adbe51883f32a73c265ef0b7605d.zip |
Merge branch 'sverk/hipe-inline-reserve-trap-frame'
* sverk/hipe-inline-reserve-trap-frame:
erts: Extend usage of ASM macro to avoid including asm macros in C code
erts: Make hipe_{un}reserve_beam_trap_frame INLINE
Diffstat (limited to 'erts/emulator/hipe/hipe_stack.h')
-rw-r--r-- | erts/emulator/hipe/hipe_stack.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/erts/emulator/hipe/hipe_stack.h b/erts/emulator/hipe/hipe_stack.h index 66f9f04c73..4cfdb54dd8 100644 --- a/erts/emulator/hipe/hipe_stack.h +++ b/erts/emulator/hipe/hipe_stack.h @@ -108,12 +108,23 @@ extern int hipe_fill_stacktrace(Process*, int, Eterm**); #if 0 && defined(HIPE_NSTACK_GROWS_UP) #define hipe_nstack_start(p) ((p)->hipe.nstack) #define hipe_nstack_used(p) ((p)->hipe.nsp - (p)->hipe.nstack) +#define hipe_nstack_avail(p) ((p)->hipe.nstend - (p)->hipe.nsp) #endif #if defined(HIPE_NSTACK_GROWS_DOWN) #define hipe_nstack_start(p) ((p)->hipe.nsp) #define hipe_nstack_used(p) ((p)->hipe.nstend - (p)->hipe.nsp) +#define hipe_nstack_avail(p) ((unsigned)((p)->hipe.nsp - (p)->hipe.nstack)) #endif +/* ensure that at least nwords words are available on the native stack */ +static __inline__ void hipe_check_nstack(Process *p, unsigned nwords) +{ + extern void hipe_inc_nstack(Process *p); + + while (hipe_nstack_avail(p) < nwords) + hipe_inc_nstack(p); +} + /* * GC support procedures */ |