aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/src/rec_env.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2019-01-12 15:57:32 +0100
committerBjörn Gustavsson <[email protected]>2019-01-16 13:06:00 +0100
commiteb0b8da6e816afde020e3f229803045f8b2bdb89 (patch)
tree1b59ad3c0dc45ea34138495d1e0a98a5bc565ff2 /lib/compiler/src/rec_env.erl
parentc865abfcd396957e3c831a9f3dbe7922f63795be (diff)
downloadotp-eb0b8da6e816afde020e3f229803045f8b2bdb89.tar.gz
otp-eb0b8da6e816afde020e3f229803045f8b2bdb89.tar.bz2
otp-eb0b8da6e816afde020e3f229803045f8b2bdb89.zip
Refactor string operands
There are two instructions that take string operands: {bs_put_string,Fail,NumberOfBytes,{string,String}} {bs_match_string,Fail,Register,NumberOfBits,{string,String}} In the canonical BEAM code that is passed to beam_asm, string String is currently represented as a list. (The string in bs_match_string is a bitstring before the beam_z compiler pass.) That is wasteful, because there will be unnecessary conversions between lists and binaries. Change the representation of String to be a binary. Furthermore, bs_put_string is an optimization of a bs_put_binary instruction with a literal binary operand. Currently, the bs_put_string instruction is introduced in beam_bs. Delay the introduction of bs_put_string to the beam_z pass. That will simplify optimizations and allow us to do the optimization currently done in beam_bs in a SSA pass in a future commit.
Diffstat (limited to 'lib/compiler/src/rec_env.erl')
0 files changed, 0 insertions, 0 deletions