+ introduced TWasmValidationStacks.PopCtrl

This commit is contained in:
Nikolay Nikolov 2024-01-31 02:38:09 +02:00
parent 4cb97dcdb3
commit f3e667da42

View File

@ -100,6 +100,7 @@ uses
function PopVals(vals: TWasmBasicTypeList): TWasmBasicTypeList; function PopVals(vals: TWasmBasicTypeList): TWasmBasicTypeList;
procedure PushCtrl(_opcode: tasmop; _in, _out: TWasmBasicTypeList); procedure PushCtrl(_opcode: tasmop; _in, _out: TWasmBasicTypeList);
function PopCtrl: TWasmControlFrame;
end; end;
twasmstruc_stack = class; twasmstruc_stack = class;
@ -518,6 +519,18 @@ uses
FCtrlStack.Push(frame); FCtrlStack.Push(frame);
end; end;
function TWasmValidationStacks.PopCtrl: TWasmControlFrame;
begin
FillChar(Result,SizeOf(Result),0);
if FCtrlStack.Count=0 then
internalerror(2024013106);
Result:=FCtrlStack[0];
PopVals(Result.end_types);
if FValueStack.Count<>Result.height then
internalerror(2024013107);
FCtrlStack.Pop;
end;
{ twasmstruc_stack } { twasmstruc_stack }
function twasmstruc_stack.Get(Index: Integer): taicpu_wasm_structured_instruction; function twasmstruc_stack.Get(Index: Integer): taicpu_wasm_structured_instruction;