diff options
author | Björn Gustavsson <[email protected]> | 2010-12-14 07:23:19 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2011-01-17 15:23:40 +0100 |
commit | 56da36ef79a1c7ffb39836e1838084ed53dda6f0 (patch) | |
tree | 33371d2db9f501bc9ce80ba695ac642337646356 /erts/emulator/beam/beam_load.c | |
parent | 4d6e7ac0aa307271e0b265dd41dea4eb0fc1dee7 (diff) | |
download | otp-56da36ef79a1c7ffb39836e1838084ed53dda6f0.tar.gz otp-56da36ef79a1c7ffb39836e1838084ed53dda6f0.tar.bz2 otp-56da36ef79a1c7ffb39836e1838084ed53dda6f0.zip |
Support packing of the 'I' type in a 64-bit emulator
In many (not all) cases, the value for the 'I' type will
fit into 32 bits.
Diffstat (limited to 'erts/emulator/beam/beam_load.c')
-rw-r--r-- | erts/emulator/beam/beam_load.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/erts/emulator/beam/beam_load.c b/erts/emulator/beam/beam_load.c index 65cd6f91bb..8c380536ae 100644 --- a/erts/emulator/beam/beam_load.c +++ b/erts/emulator/beam/beam_load.c @@ -2002,6 +2002,11 @@ load_code(LoaderState* stp) case '6': /* Shift 16 steps */ packed = (packed << BEAM_LOOSE_SHIFT) | code[--ci]; break; +#ifdef ARCH_64 + case 'w': /* Shift 32 steps */ + packed = (packed << BEAM_WIDE_SHIFT) | code[--ci]; + break; +#endif case 'p': /* Put instruction (from stack). */ code[ci++] = *--sp; break; |