Browse Source

* WebAssembly temp gen: introduced localsfirsttemp and localslasttemp, use these
for the locals temps indices, instead of firsttemp and lasttemp, which refer
to the temps on the linear stack

Nikolay Nikolov 1 year ago
parent
commit
e67094ec28
1 changed files with 8 additions and 4 deletions
  1. 8 4
      compiler/wasm32/tgcpu.pas

+ 8 - 4
compiler/wasm32/tgcpu.pas

@@ -67,6 +67,9 @@ unit tgcpu;
 
        ttgwasm = class(ttgobj)
         private
+         localsfirsttemp,
+         localslasttemp: longint;
+
          procedure updateFirstTemp;
 
          procedure allocLocalVarToRef(wbt: TWasmBasicType; out ref: treference);
@@ -205,8 +208,8 @@ unit tgcpu;
 
     procedure ttgwasm.updateFirstTemp;
     begin
-      firsttemp := localvars.varindex;
-      if lasttemp<firsttemp then lasttemp := firsttemp;
+      localsfirsttemp := localvars.varindex;
+      if localslasttemp<localsfirsttemp then localslasttemp := localsfirsttemp;
     end;
 
     constructor ttgwasm.create;
@@ -223,8 +226,9 @@ unit tgcpu;
 
     procedure ttgwasm.setfirsttemp(l: asizeint);
       begin
-        firsttemp:=l;
-        lasttemp:=l;
+        inherited setfirsttemp(0);
+        localsfirsttemp:=l;
+        localslasttemp:=l;
         localvars.varindex := l; //?
       end;