diff options
author | Patrik Nyblom <[email protected]> | 2009-12-07 15:25:32 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2010-03-10 14:23:54 +0100 |
commit | 5a8e6c4183a30f3b10de22fa5ba80950dfb2adea (patch) | |
tree | 1b1830bf144427531d7be5aa968e02bb2e67539e /erts/emulator/beam/erl_vm.h | |
parent | 356c33b6063de632f9c98c66260603e6edbc3ee5 (diff) | |
download | otp-5a8e6c4183a30f3b10de22fa5ba80950dfb2adea.tar.gz otp-5a8e6c4183a30f3b10de22fa5ba80950dfb2adea.tar.bz2 otp-5a8e6c4183a30f3b10de22fa5ba80950dfb2adea.zip |
Fit all heap data into the 32-bit address range
This is the first step in the implementation of the half-word emulator,
a 64-bit emulator where all pointers to heap data will be stored
in 32-bit words. Code specific for this emulator variant is
conditionally compiled when the HALFWORD_HEAP define has
a non-zero value.
First force all pointers to heap data to fall into a single 32-bit range,
but still store them in 64-bit words.
Temporary term data stored on C stack is moved into scheduler specific
storage (allocated as heaps) and macros are added to make this
happen only in emulators where this is needed. For a vanilla VM the
temporary terms are still stored on the C stack.
Diffstat (limited to 'erts/emulator/beam/erl_vm.h')
-rw-r--r-- | erts/emulator/beam/erl_vm.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_vm.h b/erts/emulator/beam/erl_vm.h index 50b3e5b61c..1b61bca440 100644 --- a/erts/emulator/beam/erl_vm.h +++ b/erts/emulator/beam/erl_vm.h @@ -50,6 +50,15 @@ #define MAX_ARG 256 /* Max number of arguments allowed */ #define MAX_REG 1024 /* Max number of x(N) registers used */ +/* Scheduler stores data for temporary heaps if + !HEAP_ON_C_STACK. Macros (*TmpHeap*) in global.h selects if we put temporary + heap data on the C stack or if we use the buffers in the scheduler data. */ +#define TMP_HEAP_SIZE 128 /* Number of Eterm in the schedulers + small heap for transient heap data */ +#define CMP_TMP_HEAP_SIZE 2 /* cmp wants its own tmp-heap... */ +#define ERL_ARITH_TMP_HEAP_SIZE 4 /* as does erl_arith... */ +#define BEAM_EMU_TMP_HEAP_SIZE 2 /* and beam_emu... */ + /* * The new arithmetic operations need some extra X registers in the register array. */ |