From f6705f03a651d9eb2f9314d1cd5ba91169def7f3 Mon Sep 17 00:00:00 2001 From: nickysn Date: Mon, 3 Aug 2020 13:01:05 +0000 Subject: [PATCH] [PATCH 114/188] update end instruction processing From 25c3284d093b3fac230101e8579bcc986b3a1cce Mon Sep 17 00:00:00 2001 From: Dmitry Boyarintsev Date: Wed, 18 Mar 2020 13:19:23 -0400 git-svn-id: branches/wasm@46110 - --- utils/wasmbin/wasmmodule.pas | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/utils/wasmbin/wasmmodule.pas b/utils/wasmbin/wasmmodule.pas index 8e4d3b54f6..e770f5090b 100644 --- a/utils/wasmbin/wasmmodule.pas +++ b/utils/wasmbin/wasmmodule.pas @@ -770,9 +770,15 @@ var i : integer; j : integer; ci : TWasmInstr; + endNeed : Integer; begin + endNeed := 1; for i:=0 to l.Count-1 do begin ci:=l[i]; + + if INST_FLAGS[ci.code].Param = ipResType then + inc(endNeed); + case ci.code of INST_local_get, INST_local_set, INST_local_tee: begin @@ -797,13 +803,15 @@ begin if Assigned(ci.insttype) and (ci.insttype.typeNum<0) then ci.insttype.typeNum:=RegisterFuncType(m, ci.insttype); end; + + INST_END: dec(endNeed); end; PopulateRelocData(m, ci); end; // adding end instruction - if checkEnd and (l.Count>0) and (l[l.Count-1].code<>INST_END) then + if checkEnd and (endNeed>0) then l.AddInstr(INST_END); end;