Browse Source

* don't reserve bss data for wasm global vars

Nikolay Nikolov 3 years ago
parent
commit
90b8b9d121
1 changed files with 15 additions and 2 deletions
  1. 15 2
      compiler/wasm32/nwasmutil.pas

+ 15 - 2
compiler/wasm32/nwasmutil.pas

@@ -26,7 +26,8 @@ unit nwasmutil;
 interface
 
   uses
-    ngenutil;
+    ngenutil,
+    symsym;
 
   type
 
@@ -34,6 +35,7 @@ interface
 
     twasmnodeutils = class(tnodeutils)
     public
+      class procedure insertbssdata(sym : tstaticvarsym); override;
       class procedure InsertObjectInfo; override;
     end;
 
@@ -44,11 +46,22 @@ implementation
     cpubase,
     aasmbase,aasmdata,aasmtai,aasmcpu,
     hlcgobj,hlcgcpu,
-    symdef,symtype,symconst,
+    symdef,symtype,symconst,symcpu,
     fmodule;
 
   { twasmnodeutils }
 
+  class procedure twasmnodeutils.insertbssdata(sym: tstaticvarsym);
+    var
+      symcpu: tcpustaticvarsym;
+    begin
+      symcpu:=tcpustaticvarsym(sym);
+      if symcpu.is_wasm_global then
+        // don't reserve bss data for wasm global vars
+      else
+        inherited;
+    end;
+
   class procedure twasmnodeutils.InsertObjectInfo;
 
       procedure WriteImportDll(list: TAsmList; proc: tprocdef);