aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/src/v3_kernel.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2016-09-29 12:17:58 +0200
committerBjörn Gustavsson <[email protected]>2016-09-29 12:17:58 +0200
commit3651c6bb09319bd4e87892dc9ae0e6620a5a3e8d (patch)
treed1e312ba372e578f8adb0be5c98281df68c61abb /lib/compiler/src/v3_kernel.erl
parent81082ce34fcaa97b0ef66a5e445fdbf2e3b9644c (diff)
parent05130e485558919344584f9bbfa057efdca94c3d (diff)
downloadotp-3651c6bb09319bd4e87892dc9ae0e6620a5a3e8d.tar.gz
otp-3651c6bb09319bd4e87892dc9ae0e6620a5a3e8d.tar.bz2
otp-3651c6bb09319bd4e87892dc9ae0e6620a5a3e8d.zip
Merge branch 'bjorn/compiler/misc'
* bjorn/compiler/misc: sys_core_fold: Run optimizations to a fixpoint sys_core_fold: Improve case optimization sys_core_fold: Correct scope verification code core_pp: Correct printing of map updates Simplify handling of internal BIFs v3_life: Eliminate special handling of guards Simplify beam_utils bs_match_SUITE: Add a test case for beam_utils bif_SUITE: Cover the remaining uncovered lines erl_bifs: Remove error_logger:warning_map/0 as a safe BIF beam_validator: Correct reporting of y register number beam_jump: Don't try to handle a label at the very end beam_jump: Simplify eliminate_fallthroughs/2 beam_listing: Remove support for listing sys_pre_expand format
Diffstat (limited to 'lib/compiler/src/v3_kernel.erl')
-rw-r--r--lib/compiler/src/v3_kernel.erl14
1 files changed, 5 insertions, 9 deletions
diff --git a/lib/compiler/src/v3_kernel.erl b/lib/compiler/src/v3_kernel.erl
index b4bbc5e739..859f110a53 100644
--- a/lib/compiler/src/v3_kernel.erl
+++ b/lib/compiler/src/v3_kernel.erl
@@ -1734,15 +1734,15 @@ uexpr(#k_receive_accept{anno=A}, _, St) ->
{#k_receive_accept{anno=#k{us=[],ns=[],a=A}},[],St};
uexpr(#k_receive_next{anno=A}, _, St) ->
{#k_receive_next{anno=#k{us=[],ns=[],a=A}},[],St};
-uexpr(#k_try{anno=A,arg=A0,vars=Vs,body=B0,evars=Evs,handler=H0}=Try,
+uexpr(#k_try{anno=A,arg=A0,vars=Vs,body=B0,evars=Evs,handler=H0},
{break,Rs0}=Br, St0) ->
case is_in_guard(St0) of
true ->
{[#k_var{name=X}],#k_var{name=X}} = {Vs,B0}, %Assertion.
#k_atom{val=false} = H0, %Assertion.
{A1,Bu,St1} = uexpr(A0, Br, St0),
- {Try#k_try{anno=#k{us=Bu,ns=lit_list_vars(Rs0),a=A},
- arg=A1,ret=Rs0},Bu,St1};
+ {#k_protected{anno=#k{us=Bu,ns=lit_list_vars(Rs0),a=A},
+ arg=A1,ret=Rs0},Bu,St1};
false ->
{Avs,St1} = new_vars(length(Vs), St0),
{A1,Au,St2} = ubody(A0, {break,Avs}, St1),
@@ -1791,13 +1791,9 @@ uexpr(#ifun{anno=A,vars=Vs,body=B0}, {break,Rs}, St0) ->
end,
Fun = #k_fdef{anno=#k{us=[],ns=[],a=A},func=Fname,arity=Arity,
vars=Vs ++ Fvs,body=B1},
- %% Set dummy values for Index and Uniq -- the real values will
- %% be assigned by beam_asm.
- Index = Uniq = 0,
{#k_bif{anno=#k{us=Free,ns=lit_list_vars(Rs),a=A},
- op=#k_internal{name=make_fun,arity=length(Free)+3},
- args=[#k_atom{val=Fname},#k_int{val=Arity},
- #k_int{val=Index},#k_int{val=Uniq}|Fvs],
+ op=#k_internal{name=make_fun,arity=length(Free)+2},
+ args=[#k_atom{val=Fname},#k_int{val=Arity}|Fvs],
ret=Rs},
Free,add_local_function(Fun, St)};
uexpr(Lit, {break,Rs0}, St0) ->