瀏覽代碼

* inverted the indices of TWasmValueStack, so that item 0 is top of stack

Nikolay Nikolov 1 年之前
父節點
當前提交
6aa49038a5
共有 1 個文件被更改,包括 10 次插入4 次删除
  1. 10 4
      compiler/wasm32/aasmcpu.pas

+ 10 - 4
compiler/wasm32/aasmcpu.pas

@@ -347,17 +347,23 @@ uses
     { TWasmValueStack }
 
     function TWasmValueStack.GetItems(AIndex: Integer): TWasmBasicType;
+      var
+        I: Integer;
       begin
-        if (AIndex<Low(FValStack)) or (AIndex>High(FValStack)) then
+        I:=High(FValStack)-AIndex;
+        if (I<Low(FValStack)) or (I>High(FValStack)) then
           internalerror(2024011702);
-        Result:=FValStack[AIndex];
+        Result:=FValStack[I];
       end;
 
     procedure TWasmValueStack.SetItems(AIndex: Integer; AValue: TWasmBasicType);
+      var
+        I: Integer;
       begin
-        if (AIndex<Low(FValStack)) or (AIndex>High(FValStack)) then
+        I:=High(FValStack)-AIndex;
+        if (I<Low(FValStack)) or (I>High(FValStack)) then
           internalerror(2024011703);
-        FValStack[AIndex]:=AValue;
+        FValStack[I]:=AValue;
       end;
 
     procedure TWasmValueStack.Push(wbt: TWasmBasicType);