aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/src/beam_asm.erl
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2014-02-10 18:55:17 +0100
committerBjörn-Egil Dahlberg <[email protected]>2014-02-13 14:39:28 +0100
commit210dbf68a62794b51b74337381cd87424a46b2a5 (patch)
tree6f7a25b60514b1b96bea15c4cf568c1a00c02504 /lib/compiler/src/beam_asm.erl
parent993642bd638f194c2cbb0e62ee706e8d6eb81fce (diff)
downloadotp-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.erl2
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) ->