Browse Source

[PATCH 144/188] writing memory section

From 11501a01346a0cb340c6af7d9899d8e2d429f7d3 Mon Sep 17 00:00:00 2001
From: Dmitry Boyarintsev <[email protected]>
Date: Wed, 25 Mar 2020 12:14:20 -0400

git-svn-id: branches/wasm@46140 -
nickysn 5 years ago
parent
commit
0528389c2f
1 changed files with 24 additions and 0 deletions
  1. 24 0
      utils/wasmbin/wasmbinwriter.pas

+ 24 - 0
utils/wasmbin/wasmbinwriter.pas

@@ -52,6 +52,7 @@ type
     procedure WriteImportSect;
     procedure WriteImportSect;
     procedure WriteFuncTypeSect;
     procedure WriteFuncTypeSect;
     procedure WriteTableSect;
     procedure WriteTableSect;
+    procedure WriteMemorySect;
     procedure WriteFuncSect;
     procedure WriteFuncSect;
     procedure WriteExportSect;
     procedure WriteExportSect;
     procedure WriteCodeSect;
     procedure WriteCodeSect;
@@ -254,6 +255,12 @@ begin
     inc(writeSec);
     inc(writeSec);
   end;
   end;
 
 
+  // 05 memory section
+  if m.MemoryCount>0 then begin
+    WriteMemorySect;
+    inc(writeSec);
+  end;
+
   // 07 export section
   // 07 export section
   if m.ExportCount>0 then begin
   if m.ExportCount>0 then begin
     WriteExportSect;
     WriteExportSect;
@@ -344,6 +351,23 @@ begin
   SectionEnd(sc);
   SectionEnd(sc);
 end;
 end;
 
 
+procedure TBinWriter.WriteMemorySect;
+var
+  sc : TSectionRec;
+  i  : integer;
+  m  : TWasmMemory;
+begin
+  SectionBegin(SECT_MEMORY, sc);
+
+  WriteU32(dst, module.MemoryCount);
+  for i:=0 to module.MemoryCount-1 do begin
+    m := module.GetMemory(i);
+    WriteLimit(dst, m.min, m.max);
+  end;
+
+  SectionEnd(sc);
+end;
+
 procedure TBinWriter.WriteFuncSect;
 procedure TBinWriter.WriteFuncSect;
 var
 var
   sc : TSectionRec;
   sc : TSectionRec;