소스 검색

+ introduced TWasmValidationStacks.PopCtrl

Nikolay Nikolov 1 년 전
부모
커밋
f3e667da42
1개의 변경된 파일13개의 추가작업 그리고 0개의 파일을 삭제
  1. 13 0
      compiler/wasm32/aasmcpu.pas

+ 13 - 0
compiler/wasm32/aasmcpu.pas

@@ -100,6 +100,7 @@ uses
         function PopVals(vals: TWasmBasicTypeList): TWasmBasicTypeList;
 
         procedure PushCtrl(_opcode: tasmop; _in, _out: TWasmBasicTypeList);
+        function PopCtrl: TWasmControlFrame;
       end;
 
       twasmstruc_stack = class;
@@ -518,6 +519,18 @@ uses
         FCtrlStack.Push(frame);
       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 }
 
     function twasmstruc_stack.Get(Index: Integer): taicpu_wasm_structured_instruction;