From 329b963c8022ef1d4aed1fa380e58930c275df80 Mon Sep 17 00:00:00 2001 From: Michael Van Canneyt Date: Fri, 18 Apr 2025 09:47:43 +0200 Subject: [PATCH] * Webassembly shared buffer & IsSharedBuffer --- packages/rtl/src/webassembly.pas | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/packages/rtl/src/webassembly.pas b/packages/rtl/src/webassembly.pas index d1d6c74..81937da 100644 --- a/packages/rtl/src/webassembly.pas +++ b/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.