diff options
author | Sverker Eriksson <[email protected]> | 2016-01-07 18:56:48 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2016-01-07 18:56:48 +0100 |
commit | 8c4e2a32656f98e20a970e5ab45fb7405ae0095c (patch) | |
tree | e2b93ef1a01c047cbac3a415637dc985e82acd20 /erts/emulator/beam/erl_process_dict.h | |
parent | 27cd49c16b442625782d68e6f802a1c76c48d349 (diff) | |
parent | 5db3a62f821413f267427b2bc38045324c57aaf6 (diff) | |
download | otp-8c4e2a32656f98e20a970e5ab45fb7405ae0095c.tar.gz otp-8c4e2a32656f98e20a970e5ab45fb7405ae0095c.tar.bz2 otp-8c4e2a32656f98e20a970e5ab45fb7405ae0095c.zip |
Merge branch 'sverk/proc-dict-opt'
OTP-13167
* sverk/proc-dict-opt:
erts: Add new test case pdict_SUITE:mixed
erts: Add 'fill_heap' to erts_debug:state_internal_state
erts: Rename proc dict size to arraySize
erts: Refactor proc dict with 'usedSlots'
erts: Add sizeMask for faster proc dict indexing
erts: Remove ProcDict.used
erts: Add proc dict macros ERTS_PD_START/SIZE
erts: Optimize away function "array_put" in proc dict
erts: Optimize hashing in process dictionary
Diffstat (limited to 'erts/emulator/beam/erl_process_dict.h')
-rw-r--r-- | erts/emulator/beam/erl_process_dict.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/erts/emulator/beam/erl_process_dict.h b/erts/emulator/beam/erl_process_dict.h index 9aa21b7c38..dac214c8a1 100644 --- a/erts/emulator/beam/erl_process_dict.h +++ b/erts/emulator/beam/erl_process_dict.h @@ -23,14 +23,18 @@ #include "sys.h" typedef struct proc_dict { - unsigned int size; - unsigned int used; - unsigned int homeSize; + unsigned int sizeMask; + unsigned int usedSlots; + unsigned int arraySize; unsigned int splitPosition; Uint numElements; Eterm data[1]; /* The beginning of an array of erlang terms */ } ProcDict; +#define ERTS_PD_START(PD) ((PD)->data) +#define ERTS_PD_SIZE(PD) ((PD)->usedSlots) + +int erts_pd_set_initial_size(int size); Uint erts_dicts_mem_size(struct process *p); void erts_erase_dicts(struct process *p); void erts_dictionary_dump(int to, void *to_arg, ProcDict *pd); |