diff options
author | Sverker Eriksson <[email protected]> | 2015-03-11 21:09:33 +0100 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2015-03-12 19:15:34 +0100 |
commit | 2aeb8cfd42be8ab1b7eee4a7f144122223dd7261 (patch) | |
tree | d18c6f75d228e8a89b1c59407c5b92708828aeaf /erts/emulator/beam/global.h | |
parent | 81551dd13167b9c4458c4fee7ce08e152f9f5273 (diff) | |
download | otp-2aeb8cfd42be8ab1b7eee4a7f144122223dd7261.tar.gz otp-2aeb8cfd42be8ab1b7eee4a7f144122223dd7261.tar.bz2 otp-2aeb8cfd42be8ab1b7eee4a7f144122223dd7261.zip |
erts: Fix nif API for hashmaps
Diffstat (limited to 'erts/emulator/beam/global.h')
-rw-r--r-- | erts/emulator/beam/global.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/erts/emulator/beam/global.h b/erts/emulator/beam/global.h index 09bcf71a28..ef7a183d08 100644 --- a/erts/emulator/beam/global.h +++ b/erts/emulator/beam/global.h @@ -542,6 +542,20 @@ void erl_grow_wstack(ErtsWStack*, Uint need); } #define DECLARE_WSTACK WSTACK_DECLARE +typedef struct ErtsDynamicWStack_ { + UWord default_stack[DEF_WSTACK_SIZE]; + ErtsWStack ws; +}ErtsDynamicWStack; + +#define WSTACK_INIT(dwsp, ALC_TYPE) \ +do { \ + (dwsp)->ws.wstart = (dwsp)->default_stack; \ + (dwsp)->ws.wsp = (dwsp)->default_stack; \ + (dwsp)->ws.wend = (dwsp)->default_stack + DEF_WSTACK_SIZE;\ + (dwsp)->ws.wdefault = (dwsp)->default_stack; \ + (dwsp)->ws.alloc_type = ALC_TYPE; \ +} while (0) + #define WSTACK_CHANGE_ALLOCATOR(s,t) \ do { \ if (s.wstart != WSTK_DEF_STACK(s)) { \ @@ -553,7 +567,7 @@ do { \ #define WSTACK_DESTROY(s) \ do { \ - if (s.wstart != WSTK_DEF_STACK(s)) { \ + if (s.wstart != s.wdefault) { \ erts_free(s.alloc_type, s.wstart); \ } \ } while(0) |