aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe/icode/hipe_beam_to_icode.erl
diff options
context:
space:
mode:
authorMagnus Lång <[email protected]>2017-11-05 16:12:42 +0100
committerMagnus Lång <[email protected]>2017-11-16 13:24:55 +0100
commit8e8380865bb31c119e7f11fbdbbb14ea58ebbef2 (patch)
treed9b663c10f68df6a82216fdf08b4072787b01758 /lib/hipe/icode/hipe_beam_to_icode.erl
parent68dd05500dcad280417a2479f32fb6f7894ae712 (diff)
downloadotp-8e8380865bb31c119e7f11fbdbbb14ea58ebbef2.tar.gz
otp-8e8380865bb31c119e7f11fbdbbb14ea58ebbef2.tar.bz2
otp-8e8380865bb31c119e7f11fbdbbb14ea58ebbef2.zip
HiPE: Unique ref receive opt
Diffstat (limited to 'lib/hipe/icode/hipe_beam_to_icode.erl')
-rw-r--r--lib/hipe/icode/hipe_beam_to_icode.erl8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/hipe/icode/hipe_beam_to_icode.erl b/lib/hipe/icode/hipe_beam_to_icode.erl
index cb4c1cfbd3..4c7fbad711 100644
--- a/lib/hipe/icode/hipe_beam_to_icode.erl
+++ b/lib/hipe/icode/hipe_beam_to_icode.erl
@@ -415,11 +415,13 @@ trans_fun([{wait_timeout,{_,Lbl},Reg}|Instructions], Env) ->
SuspTmout = hipe_icode:mk_if(suspend_msg_timeout,[],
map_label(Lbl),hipe_icode:label_name(DoneLbl)),
Movs ++ [SetTmout, SuspTmout, DoneLbl | trans_fun(Instructions,Env1)];
-%%--- recv_mark/1 & recv_set/1 --- XXX: Handle better??
+%%--- recv_mark/1 & recv_set/1 ---
trans_fun([{recv_mark,{f,_}}|Instructions], Env) ->
- trans_fun(Instructions,Env);
+ Mark = hipe_icode:mk_primop([],recv_mark,[]),
+ [Mark | trans_fun(Instructions,Env)];
trans_fun([{recv_set,{f,_}}|Instructions], Env) ->
- trans_fun(Instructions,Env);
+ Set = hipe_icode:mk_primop([],recv_set,[]),
+ [Set | trans_fun(Instructions,Env)];
%%--------------------------------------------------------------------
%%--- Translation of arithmetics {bif,ArithOp, ...} ---
%%--------------------------------------------------------------------