aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/beam_load.c
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2010-10-19 16:32:32 +0200
committerBjörn Gustavsson <[email protected]>2011-01-17 15:23:38 +0100
commitc5df89ea0d57e41190155dcf14cbc375dc647bee (patch)
tree309b0ce4d189bd70172b063a6dfc9b8a44f24211 /erts/emulator/beam/beam_load.c
parente31af112f63b11622d6a3a49cb444d5613af2f1f (diff)
downloadotp-c5df89ea0d57e41190155dcf14cbc375dc647bee.tar.gz
otp-c5df89ea0d57e41190155dcf14cbc375dc647bee.tar.bz2
otp-c5df89ea0d57e41190155dcf14cbc375dc647bee.zip
If the wordsize is 64 bits, pack up to 4 operands into a word
In the 32-bit BEAM emulator, it is only possible to pack 3 register operands into one word. Therefore, the move2 instruction (that has 4 operands) needs two words for its operands. Take advantage of the larger wordsize in the 64-bit emulator and pack up to 4 operands into a single word.
Diffstat (limited to 'erts/emulator/beam/beam_load.c')
-rw-r--r--erts/emulator/beam/beam_load.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/erts/emulator/beam/beam_load.c b/erts/emulator/beam/beam_load.c
index 73644ecfd6..c190efb0d1 100644
--- a/erts/emulator/beam/beam_load.c
+++ b/erts/emulator/beam/beam_load.c
@@ -1765,7 +1765,7 @@ load_code(LoaderState* stp)
}
stp->specific_op = specific;
- CodeNeed(opc[stp->specific_op].sz+2); /* Extra margin for packing */
+ CodeNeed(opc[stp->specific_op].sz+16); /* Extra margin for packing */
code[ci++] = BeamOpCode(stp->specific_op);
}