Browse Source

* Webassembly shared buffer & IsSharedBuffer

Michael Van Canneyt 4 months ago
parent
commit
329b963c80
1 changed files with 18 additions and 0 deletions
  1. 18 0
      packages/rtl/src/webassembly.pas

+ 18 - 0
packages/rtl/src/webassembly.pas

@@ -41,11 +41,19 @@ Type
   TJSWebAssemblyMemory = class external name 'WebAssembly.Memory' (TJSObject)
   private
     FBuffer: TJSArrayBuffer; external name 'buffer';
+    FSharedBuffer: TJSSharedArrayBuffer; external name 'buffer';
   Public
     constructor new (memorydescriptor : TJSWebAssemblyMemoryDescriptor);
     constructor new (memorydescriptor : TJSObject);
     Function grow(number : NativeInt) : NativeInt; external name 'grow';
     Property buffer : TJSArrayBuffer Read FBuffer;
+    Property Sharedbuffer : TJSSharedArrayBuffer Read FSharedBuffer;
+  end;
+
+  { TJSWebAssemblyMemoryHelper }
+
+  TJSWebAssemblyMemoryHelper = class helper for TJSWebAssemblyMemory
+    function IsSharedBuffer : Boolean;
   end;
 
   { TJSModulesArray }
@@ -129,5 +137,15 @@ Type
 
 implementation
 
+{ TJSWebAssemblyMemoryHelper }
+
+function TJSWebAssemblyMemoryHelper.IsSharedBuffer: Boolean;
+begin
+  asm
+  return ((!(buffer === null)) && (typeof this.FBuffer === 'object'))
+          && (this.FBuffer instanceof SharedArrayBuffer);
+  end;
+end;
+
 end.