aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_process_dict.h
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2016-01-07 18:56:48 +0100
committerSverker Eriksson <[email protected]>2016-01-07 18:56:48 +0100
commit8c4e2a32656f98e20a970e5ab45fb7405ae0095c (patch)
treee2b93ef1a01c047cbac3a415637dc985e82acd20 /erts/emulator/beam/erl_process_dict.h
parent27cd49c16b442625782d68e6f802a1c76c48d349 (diff)
parent5db3a62f821413f267427b2bc38045324c57aaf6 (diff)
downloadotp-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.h10
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);