aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/utils
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2017-08-18 08:27:51 +0200
committerBjörn Gustavsson <[email protected]>2017-08-23 05:57:39 +0200
commit0848894878ef90b1c6d81e4a6e2741508d0b99f5 (patch)
treec3852f78520af8802d251fc2147a5a0b1b0c77f5 /erts/emulator/utils
parent8f2646de9a74d82d8527782bdb58584c60e99742 (diff)
downloadotp-0848894878ef90b1c6d81e4a6e2741508d0b99f5.tar.gz
otp-0848894878ef90b1c6d81e4a6e2741508d0b99f5.tar.bz2
otp-0848894878ef90b1c6d81e4a6e2741508d0b99f5.zip
Pack instructions using 'q', 'c', and 's'
Update the pack engine to safely push literal operands to the pack stack and to safely pop them back to another code address. That will allow packing of more instructions.
Diffstat (limited to 'erts/emulator/utils')
-rwxr-xr-xerts/emulator/utils/beam_makeops12
1 files changed, 0 insertions, 12 deletions
diff --git a/erts/emulator/utils/beam_makeops b/erts/emulator/utils/beam_makeops
index 2a957d2c9d..5f8395a289 100755
--- a/erts/emulator/utils/beam_makeops
+++ b/erts/emulator/utils/beam_makeops
@@ -1475,18 +1475,6 @@ sub do_pack {
if (defined $bits_needed{$arg}) {
$packable_args++;
push @bits_needed, $bits_needed{$arg};
- } elsif ($arg =~ /^[scq]/ and $packable_args > 0) {
- # When packing, this operand will be picked up from the
- # code array, put onto the packing stack, and later put
- # back into a different location in the code. The problem
- # is that if this operand is a literal, the original
- # location in the code would have been remembered in a
- # literal patch. For packing to work, we would have to
- # adjust the position in the literal patch. For the
- # moment, adding additional instructions to the packing
- # engine to handle this does not seem worth it, so we will
- # just turn off packing.
- return ('', '', @args);
} else {
push @bits_needed, 0;
}