diff options
author | Björn-Egil Dahlberg <[email protected]> | 2014-02-10 18:55:17 +0100 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2014-02-13 14:39:28 +0100 |
commit | 210dbf68a62794b51b74337381cd87424a46b2a5 (patch) | |
tree | 6f7a25b60514b1b96bea15c4cf568c1a00c02504 /lib/compiler/src/beam_split.erl | |
parent | 993642bd638f194c2cbb0e62ee706e8d6eb81fce (diff) | |
download | otp-210dbf68a62794b51b74337381cd87424a46b2a5.tar.gz otp-210dbf68a62794b51b74337381cd87424a46b2a5.tar.bz2 otp-210dbf68a62794b51b74337381cd87424a46b2a5.zip |
compiler: Change map instructions for fetching values
* Combine multiple get values with one instruction
* Combine multiple check keys with one instruction
Diffstat (limited to 'lib/compiler/src/beam_split.erl')
-rw-r--r-- | lib/compiler/src/beam_split.erl | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/compiler/src/beam_split.erl b/lib/compiler/src/beam_split.erl index 638a4826ea..688bba9a94 100644 --- a/lib/compiler/src/beam_split.erl +++ b/lib/compiler/src/beam_split.erl @@ -53,9 +53,9 @@ split_block([{set,[D],[S|Puts],{alloc,R,{put_map,Op,{f,Lbl}=Fail}}}|Is], Bl, Acc) when Lbl =/= 0 -> split_block(Is, [], [{put_map,Fail,Op,S,D,R,{list,Puts}}| make_block(Bl, Acc)]); -split_block([{set,[D],[S],{get_map_element,K,{f,Lbl}=Fail}}|Is], Bl, Acc) +split_block([{set,Gets,[S],{get_map_elements,{f,Lbl}=Fail}}|Is], Bl, Acc) when Lbl =/= 0 -> - split_block(Is, [], [{get_map_element,Fail,S,K,D}|make_block(Bl, Acc)]); + split_block(Is, [], [{get_map_elements,Fail,S,{list,Gets}}|make_block(Bl, Acc)]); split_block([{set,[R],[],{'catch',L}}|Is], Bl, Acc) -> split_block(Is, [], [{'catch',R,L}|make_block(Bl, Acc)]); split_block([{set,[],[],{line,_}=Line}|Is], Bl, Acc) -> |