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_disasm.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_disasm.erl')
-rw-r--r-- | lib/compiler/src/beam_disasm.erl | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/compiler/src/beam_disasm.erl b/lib/compiler/src/beam_disasm.erl index 57fdf95677..3f5e9df5fd 100644 --- a/lib/compiler/src/beam_disasm.erl +++ b/lib/compiler/src/beam_disasm.erl @@ -1151,12 +1151,12 @@ resolve_inst({is_map,Args0},_,_,_) -> {test, is_map, FLbl, Args}; resolve_inst({has_map_field,Args0},_,_,_) -> - [FLbl|Args] = resolve_args(Args0), - {test,has_map_field,FLbl,Args}; + [FLbl,Src,{u,_Len}|Args] = resolve_args(Args0), + {test,has_map_field,FLbl,Src,{list,Args}}; -resolve_inst({get_map_element,Args},_,_,_) -> - [FLbl,Src,Key,Dst] = resolve_args(Args), - {get_map_element,FLbl,Src,Key,Dst}; +resolve_inst({get_map_element,Args0},_,_,_) -> + [FLbl,Src,{u,_Len}|Args] = resolve_args(Args0), + {get_map_element,FLbl,Src,{list,Args}}; %% %% Catches instructions that are not yet handled. |