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_asm.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_asm.erl')
-rw-r--r-- | lib/compiler/src/beam_asm.erl | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/compiler/src/beam_asm.erl b/lib/compiler/src/beam_asm.erl index 112b087f3c..f8cf178d2e 100644 --- a/lib/compiler/src/beam_asm.erl +++ b/lib/compiler/src/beam_asm.erl @@ -324,6 +324,8 @@ make_op({gc_bif,Bif,Fail,Live,Args,Dest}, Dict) -> encode_op(BifOp, [Fail,Live,{extfunc,erlang,Bif,Arity}|Args++[Dest]],Dict); make_op({bs_add=Op,Fail,[Src1,Src2,Unit],Dest}, Dict) -> encode_op(Op, [Fail,Src1,Src2,Unit,Dest], Dict); +make_op({test,Cond,Fail,Src,{list,_}=Ops}, Dict) -> + encode_op(Cond, [Fail,Src,Ops], Dict); make_op({test,Cond,Fail,Ops}, Dict) when is_list(Ops) -> encode_op(Cond, [Fail|Ops], Dict); make_op({test,Cond,Fail,Live,[Op|Ops],Dst}, Dict) when is_list(Ops) -> |