From 53a5c70994b016890e03df49089fc296bbfd86dd Mon Sep 17 00:00:00 2001 From: Tobias Lindahl Date: Tue, 21 May 2019 17:54:19 +0200 Subject: [PATCH] Add missing call instructions --- src/aeso_fcode_to_fate.erl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/aeso_fcode_to_fate.erl b/src/aeso_fcode_to_fate.erl index db44597..17530bc 100644 --- a/src/aeso_fcode_to_fate.erl +++ b/src/aeso_fcode_to_fate.erl @@ -1335,6 +1335,8 @@ chase_labels([L | Ls], Map, Live) -> tweak_returns(['RETURN', {'PUSH', A} | Code]) -> [{'RETURNR', A} | Code]; tweak_returns(['RETURN' | Code = [{'CALL_T', _} | _]]) -> Code; tweak_returns(['RETURN' | Code = [{'CALL_TR', _, _} | _]]) -> Code; +tweak_returns(['RETURN' | Code = [{'CALL_GT', _} | _]]) -> Code; +tweak_returns(['RETURN' | Code = [{'CALL_GTR', _, _} | _]])-> Code; tweak_returns(['RETURN' | Code = [{'ABORT', _} | _]]) -> Code; tweak_returns(Code) -> Code. @@ -1346,7 +1348,9 @@ split_calls({Ref, Code}) -> split_calls(Ref, [], Acc, Blocks) -> lists:reverse([{Ref, lists:reverse(Acc)} | Blocks]); -split_calls(Ref, [I | Code], Acc, Blocks) when element(1, I) == 'CALL'; element(1, I) == 'CALL_R' -> +split_calls(Ref, [I | Code], Acc, Blocks) when element(1, I) == 'CALL'; + element(1, I) == 'CALL_R'; + element(1, I) == 'CALL_GR' -> split_calls(make_ref(), Code, [], [{Ref, lists:reverse([I | Acc])} | Blocks]); split_calls(Ref, [I | Code], Acc, Blocks) -> split_calls(Ref, Code, [I | Acc], Blocks).