diff options
author | Björn Gustavsson <[email protected]> | 2017-12-06 10:13:14 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2017-12-07 10:09:35 +0100 |
commit | 423e51db0721b3c9bdc3dfda5c71db0a1b39f4f0 (patch) | |
tree | 12835668323802e513caece71bdf0d704bfccae5 /lib/compiler | |
parent | 31465f4296bc0b02832c7712402f41e18207aadd (diff) | |
download | otp-423e51db0721b3c9bdc3dfda5c71db0a1b39f4f0.tar.gz otp-423e51db0721b3c9bdc3dfda5c71db0a1b39f4f0.tar.bz2 otp-423e51db0721b3c9bdc3dfda5c71db0a1b39f4f0.zip |
v3_codegen: Move guard_cg_list/6 to a more logical place
Put guard_cg_list/6 directly after guard_cg/5.
Diffstat (limited to 'lib/compiler')
-rw-r--r-- | lib/compiler/src/v3_codegen.erl | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/lib/compiler/src/v3_codegen.erl b/lib/compiler/src/v3_codegen.erl index cfc0bcf9ba..d98441545b 100644 --- a/lib/compiler/src/v3_codegen.erl +++ b/lib/compiler/src/v3_codegen.erl @@ -1504,6 +1504,18 @@ guard_cg(G, _Fail, Vdb, Bef, St) -> %%ok = io:fwrite("cg ~w: ~p~n", [?LINE,{Aft}]), {Gis,Aft,St1}. +%% guard_cg_list([Kexpr], Fail, I, Vdb, StackReg, St) -> +%% {[Ainstr],StackReg,St}. + +guard_cg_list(Kes, Fail, I, Vdb, Bef, St0) -> + {Keis,{Aft,St1}} = + flatmapfoldl(fun (Ke, {Inta,Sta}) -> + {Keis,Intb,Stb} = + guard_cg(Ke, Fail, Vdb, Inta, Sta), + {Keis,{Intb,Stb}} + end, {Bef,St0}, need_heap(Kes, I)), + {Keis,Aft,St1}. + %% protected_cg([Kexpr], [Ret], Fail, I, Vdb, Bef, St) -> {[Ainstr],Aft,St}. %% Do a protected. Protecteds without return values are just done %% for effect, the return value is not checked, success passes on to @@ -1560,18 +1572,6 @@ test_cg(Test, As, Fail, I, Vdb, Bef, St) -> Aft = clear_dead(Bef, I, Vdb), {[beam_utils:bif_to_test(Test, Args, {f,Fail})],Aft,St}. -%% guard_cg_list([Kexpr], Fail, I, Vdb, StackReg, St) -> -%% {[Ainstr],StackReg,St}. - -guard_cg_list(Kes, Fail, I, Vdb, Bef, St0) -> - {Keis,{Aft,St1}} = - flatmapfoldl(fun (Ke, {Inta,Sta}) -> - {Keis,Intb,Stb} = - guard_cg(Ke, Fail, Vdb, Inta, Sta), - {Keis,{Intb,Stb}} - end, {Bef,St0}, need_heap(Kes, I)), - {Keis,Aft,St1}. - %% match_fmf(Fun, LastFail, State, [Clause]) -> {Is,Aft,State}. %% This is a special flatmapfoldl for match code gen where we %% generate a "failure" label for each clause. The last clause uses |