Преглед изворни кода

* 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);