diff options
author | Björn Gustavsson <[email protected]> | 2016-08-23 08:48:34 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2016-09-21 14:07:53 +0200 |
commit | 1d43ca9f9a236b29cb9f22917bbcfa84d1e0fa6f (patch) | |
tree | 71c9a5547c1896233004c4a4b1debeaf0af89416 /lib/compiler/src/v3_kernel.erl | |
parent | 01835845579e9f0a8da3574864747cd3ba10db6e (diff) | |
download | otp-1d43ca9f9a236b29cb9f22917bbcfa84d1e0fa6f.tar.gz otp-1d43ca9f9a236b29cb9f22917bbcfa84d1e0fa6f.tar.bz2 otp-1d43ca9f9a236b29cb9f22917bbcfa84d1e0fa6f.zip |
v3_life: Eliminate special handling of guards
Remove the special handling #k_try{} in guards in v3_life. If we
introduce a new #k_protected{} record in v3_kernel, v3_life no longer
needs to know whether it is processing guards or bodies.
Diffstat (limited to 'lib/compiler/src/v3_kernel.erl')
-rw-r--r-- | lib/compiler/src/v3_kernel.erl | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/compiler/src/v3_kernel.erl b/lib/compiler/src/v3_kernel.erl index b4bbc5e739..e3103e040e 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), |