Forráskód Böngészése

job: renamed wasidom to job

mattias 3 éve
szülő
commit
7093865f5b

+ 1 - 1
demo/wasienv/dom/BrowserDomTest1.lpi

@@ -41,7 +41,7 @@
         </CustomData>
         </CustomData>
       </Unit>
       </Unit>
       <Unit>
       <Unit>
-        <Filename Value="wadom_browser.pp"/>
+        <Filename Value="job_browser.pp"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
       </Unit>
       </Unit>
     </Units>
     </Units>

+ 3 - 3
demo/wasienv/dom/BrowserDomTest1.lpr

@@ -4,7 +4,7 @@ program BrowserDomTest1;
 
 
 uses
 uses
   BrowserConsole, BrowserApp, JS, Classes, SysUtils, Web, WebAssembly, Types,
   BrowserConsole, BrowserApp, JS, Classes, SysUtils, Web, WebAssembly, Types,
-  wasienv, wadom_browser, wadom_shared;
+  wasienv, job_browser, job_shared;
 
 
 Type
 Type
 
 
@@ -29,7 +29,7 @@ Type
     FWasiEnv: TPas2JSWASIEnvironment;
     FWasiEnv: TPas2JSWASIEnvironment;
     FMemory : TJSWebAssemblyMemory; // Memory of webassembly
     FMemory : TJSWebAssemblyMemory; // Memory of webassembly
     FTable : TJSWebAssemblyTable; // Table of exported functions
     FTable : TJSWebAssemblyTable; // Table of exported functions
-    FWADomBridge : TWADomBridge;
+    FWADomBridge : TJOBBridge;
     function CreateWebAssembly(Path: string; ImportObject: TJSObject
     function CreateWebAssembly(Path: string; ImportObject: TJSObject
       ): TJSPromise;
       ): TJSPromise;
     procedure DoWrite(Sender: TObject; const aOutput: String);
     procedure DoWrite(Sender: TObject; const aOutput: String);
@@ -133,7 +133,7 @@ begin
   FWasiEnv:=TPas2JSWASIEnvironment.Create;
   FWasiEnv:=TPas2JSWASIEnvironment.Create;
   FWasiEnv.OnStdErrorWrite:=@DoWrite;
   FWasiEnv.OnStdErrorWrite:=@DoWrite;
   FWasiEnv.OnStdOutputWrite:=@DoWrite;
   FWasiEnv.OnStdOutputWrite:=@DoWrite;
-  FWADomBridge:=TWADomBridge.Create(FWasiEnv);
+  FWADomBridge:=TJOBBridge.Create(FWasiEnv);
 
 
   if FWADomBridge.RegisterGlobalObject(TJSObject(TBird.Create('Root')))<>WasiObjIdBird then
   if FWADomBridge.RegisterGlobalObject(TJSObject(TBird.Create('Root')))<>WasiObjIdBird then
     raise Exception.Create('Root TBird wrong number');
     raise Exception.Create('Root TBird wrong number');

+ 1 - 1
demo/wasienv/dom/WasiDomTest1.lpi

@@ -29,7 +29,7 @@
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
       </Unit>
       </Unit>
       <Unit>
       <Unit>
-        <Filename Value="wadom_wasm.pas"/>
+        <Filename Value="job_wasm.pas"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
       </Unit>
       </Unit>
     </Units>
     </Units>

+ 1 - 1
demo/wasienv/dom/WasiDomTest1.lpr

@@ -5,7 +5,7 @@ program WasiDomTest1;
 {$codepage UTF8}
 {$codepage UTF8}
 
 
 uses
 uses
-  SysUtils, wadom_wasm, wadom_shared;
+  SysUtils, JOB_WAsm, JOB_Shared;
 
 
 type
 type
 
 

+ 96 - 91
demo/wasienv/dom/wadom_browser.pp → demo/wasienv/dom/job_browser.pp

@@ -1,40 +1,45 @@
-unit wadom_browser;
+{
+  JOB - JS Object Bridge for Webassembly
+
+  Browser side.
+}
+unit JOB_Browser;
 
 
 {$mode objfpc}
 {$mode objfpc}
 
 
 interface
 interface
 
 
-uses sysutils, types, js, web, wasienv, wadom_shared;
+uses sysutils, types, js, web, wasienv, JOB_Shared;
 
 
 Type
 Type
-  EWABridge = class(Exception);
+  EJOBBridge = class(Exception);
 
 
-  { TWADomBridge }
+  { TJOBBridge }
 
 
-  TWADomBridge = class(TImportExtension)
+  TJOBBridge = class(TImportExtension)
   Private
   Private
     FGlobalObjects: TJSArray;
     FGlobalObjects: TJSArray;
     FLocalObjects: TJSArray;
     FLocalObjects: TJSArray;
     FFreeLocalIds: TJSArray; // free positions in FLocalObjects
     FFreeLocalIds: TJSArray; // free positions in FLocalObjects
     FStringResult: string;
     FStringResult: string;
   Protected
   Protected
-    function FindObject(ObjId: TWasiDomObjectID): TJSObject; virtual;
-    function Invoke_JSResult(ObjId: TWasiDomObjectID; FuncNameP, FuncNameLen, ArgsP: NativeInt; out JSResult: JSValue): TWasiDomResult; virtual;
-    function Invoke_NoResult(ObjId: TWasiDomObjectID; FuncNameP, FuncNameLen, ArgsP, Dummy: NativeInt): TWasiDomResult; virtual;
-    function Invoke_BooleanResult(ObjId: TWasiDomObjectID; FuncNameP, FuncNameLen, ArgsP, ResultP: NativeInt): TWasiDomResult; virtual;
-    function Invoke_DoubleResult(ObjId: TWasiDomObjectID; FuncNameP, FuncNameLen, ArgsP, ResultP: NativeInt): TWasiDomResult; virtual;
-    function Invoke_StringResult(ObjId: TWasiDomObjectID; FuncNameP, FuncNameLen, ArgsP, ResultP: NativeInt): TWasiDomResult; virtual;
-    function Invoke_ObjectResult(ObjId: TWasiDomObjectID; FuncNameP, FuncNameLen, ArgsP, ResultP: NativeInt): TWasiDomResult; virtual;
-    function ReleaseObject(ObjId: TWasiDomObjectID): TWasiDomResult; virtual;
-    function GetStringResult(ResultP: NativeInt): TWasiDomResult; virtual;
-    function ReleaseStringResult: TWasiDomResult; virtual;
+    function FindObject(ObjId: TJOBObjectID): TJSObject; virtual;
+    function Invoke_JSResult(ObjId: TJOBObjectID; FuncNameP, FuncNameLen, ArgsP: NativeInt; out JSResult: JSValue): TJOBResult; virtual;
+    function Invoke_NoResult(ObjId: TJOBObjectID; FuncNameP, FuncNameLen, ArgsP, Dummy: NativeInt): TJOBResult; virtual;
+    function Invoke_BooleanResult(ObjId: TJOBObjectID; FuncNameP, FuncNameLen, ArgsP, ResultP: NativeInt): TJOBResult; virtual;
+    function Invoke_DoubleResult(ObjId: TJOBObjectID; FuncNameP, FuncNameLen, ArgsP, ResultP: NativeInt): TJOBResult; virtual;
+    function Invoke_StringResult(ObjId: TJOBObjectID; FuncNameP, FuncNameLen, ArgsP, ResultP: NativeInt): TJOBResult; virtual;
+    function Invoke_ObjectResult(ObjId: TJOBObjectID; FuncNameP, FuncNameLen, ArgsP, ResultP: NativeInt): TJOBResult; virtual;
+    function ReleaseObject(ObjId: TJOBObjectID): TJOBResult; virtual;
+    function GetStringResult(ResultP: NativeInt): TJOBResult; virtual;
+    function ReleaseStringResult: TJOBResult; virtual;
     function GetInvokeArguments(View: TJSDataView; ArgsP: NativeInt): TJSValueDynArray; virtual;
     function GetInvokeArguments(View: TJSDataView; ArgsP: NativeInt): TJSValueDynArray; virtual;
-    function GetWasiDomResult(v: jsvalue): TWasiDomResult;
+    function GetJOBResult(v: jsvalue): TJOBResult;
   Public
   Public
     Constructor Create(aEnv: TPas2JSWASIEnvironment); override;
     Constructor Create(aEnv: TPas2JSWASIEnvironment); override;
     Procedure FillImportObject(aObject: TJSObject); override;
     Procedure FillImportObject(aObject: TJSObject); override;
     Function ImportName: String; override;
     Function ImportName: String; override;
-    Function RegisterGlobalObject(Obj: TJSObject): TWasiDomObjectID; virtual;
+    Function RegisterGlobalObject(Obj: TJSObject): TJOBObjectID; virtual;
   end;
   end;
 
 
 Implementation
 Implementation
@@ -44,41 +49,41 @@ asm
   return String.fromCharCode.apply(null,a);
   return String.fromCharCode.apply(null,a);
 end;
 end;
 
 
-constructor TWADomBridge.Create(aEnv: TPas2JSWASIEnvironment);
+constructor TJOBBridge.Create(aEnv: TPas2JSWASIEnvironment);
 begin
 begin
   Inherited Create(aEnv);
   Inherited Create(aEnv);
   FGlobalObjects:=TJSArray.new;
   FGlobalObjects:=TJSArray.new;
-  FGlobalObjects[-WasiObjIdDocument]:=document;
-  FGlobalObjects[-WasiObjIdWindow]:=window;
-  FGlobalObjects[-WasiObjIdConsole]:=console;
-  FGlobalObjects[-WasiObjIdCaches]:=caches;
+  FGlobalObjects[-JOBObjIdDocument]:=document;
+  FGlobalObjects[-JOBObjIdWindow]:=window;
+  FGlobalObjects[-JOBObjIdConsole]:=console;
+  FGlobalObjects[-JOBObjIdCaches]:=caches;
   FLocalObjects:=TJSArray.new;
   FLocalObjects:=TJSArray.new;
   FFreeLocalIds:=TJSArray.new;
   FFreeLocalIds:=TJSArray.new;
 end;
 end;
 
 
-function TWADomBridge.ImportName: String;
+function TJOBBridge.ImportName: String;
 begin
 begin
-  Result:=WasiDomExportName;
+  Result:=JOBExportName;
 end;
 end;
 
 
-function TWADomBridge.RegisterGlobalObject(Obj: TJSObject): TWasiDomObjectID;
+function TJOBBridge.RegisterGlobalObject(Obj: TJSObject): TJOBObjectID;
 begin
 begin
   Result:=-(FGlobalObjects.push(Obj)-1);
   Result:=-(FGlobalObjects.push(Obj)-1);
 end;
 end;
 
 
-procedure TWADomBridge.FillImportObject(aObject: TJSObject);
+procedure TJOBBridge.FillImportObject(aObject: TJSObject);
 begin
 begin
-  aObject[WasiBridgeFn_InvokeNoResult]:=@Invoke_NoResult;
-  aObject[WasiBridgeFn_InvokeBooleanResult]:=@Invoke_BooleanResult;
-  aObject[WasiBridgeFn_InvokeDoubleResult]:=@Invoke_DoubleResult;
-  aObject[WasiBridgeFn_InvokeStringResult]:=@Invoke_StringResult;
-  aObject[WasiBridgeFn_GetStringResult]:=@GetStringResult;
-  aObject[WasiBridgeFn_ReleaseStringResult]:=@ReleaseStringResult;
-  aObject[WasiBridgeFn_InvokeObjectResult]:=@Invoke_ObjectResult;
-  aObject[WasiBridgeFn_ReleaseObject]:=@ReleaseObject;
+  aObject[JOBFn_InvokeNoResult]:=@Invoke_NoResult;
+  aObject[JOBFn_InvokeBooleanResult]:=@Invoke_BooleanResult;
+  aObject[JOBFn_InvokeDoubleResult]:=@Invoke_DoubleResult;
+  aObject[JOBFn_InvokeStringResult]:=@Invoke_StringResult;
+  aObject[JOBFn_GetStringResult]:=@GetStringResult;
+  aObject[JOBFn_ReleaseStringResult]:=@ReleaseStringResult;
+  aObject[JOBFn_InvokeObjectResult]:=@Invoke_ObjectResult;
+  aObject[JOBFn_ReleaseObject]:=@ReleaseObject;
 end;
 end;
 
 
-function TWADomBridge.FindObject(ObjId: TWasiDomObjectID): TJSObject;
+function TJOBBridge.FindObject(ObjId: TJOBObjectID): TJSObject;
 begin
 begin
   if ObjId<0 then
   if ObjId<0 then
     Result:=TJSObject(FGlobalObjects[-ObjId])
     Result:=TJSObject(FGlobalObjects[-ObjId])
@@ -88,8 +93,8 @@ begin
     Result:=nil;
     Result:=nil;
 end;
 end;
 
 
-function TWADomBridge.Invoke_JSResult(ObjId: TWasiDomObjectID; FuncNameP,
-  FuncNameLen, ArgsP: NativeInt; out JSResult: JSValue): TWasiDomResult;
+function TJOBBridge.Invoke_JSResult(ObjId: TJOBObjectID; FuncNameP,
+  FuncNameLen, ArgsP: NativeInt; out JSResult: JSValue): TJOBResult;
 var
 var
   View: TJSDataView;
   View: TJSDataView;
   aBytes: TJSUint8Array;
   aBytes: TJSUint8Array;
@@ -102,7 +107,7 @@ begin
 
 
   Obj:=FindObject(ObjId);
   Obj:=FindObject(ObjId);
   if Obj=nil then
   if Obj=nil then
-    exit(WasiDomResult_UnknownObjId);
+    exit(JOBResult_UnknownObjId);
 
 
   View:=getModuleMemoryDataView();
   View:=getModuleMemoryDataView();
   aBytes:=TJSUint8Array.New(View.buffer, FuncNameP, FuncNameLen);
   aBytes:=TJSUint8Array.New(View.buffer, FuncNameP, FuncNameLen);
@@ -112,7 +117,7 @@ begin
 
 
   fn:=Obj[FuncName];
   fn:=Obj[FuncName];
   if jstypeof(fn)<>'function' then
   if jstypeof(fn)<>'function' then
-    exit(WasiDomResult_NotAFunction);
+    exit(JOBResult_NotAFunction);
 
 
   if ArgsP=0 then
   if ArgsP=0 then
     JSResult:=TJSFunction(fn).call(Obj)
     JSResult:=TJSFunction(fn).call(Obj)
@@ -121,11 +126,11 @@ begin
     JSResult:=TJSFunction(fn).apply(Obj,Args);
     JSResult:=TJSFunction(fn).apply(Obj,Args);
   end;
   end;
 
 
-  Result:=WasiDomResult_Success;
+  Result:=JOBResult_Success;
 end;
 end;
 
 
-function TWADomBridge.Invoke_NoResult(ObjId: TWasiDomObjectID; FuncNameP,
-  FuncNameLen, ArgsP, Dummy: NativeInt): TWasiDomResult;
+function TJOBBridge.Invoke_NoResult(ObjId: TJOBObjectID; FuncNameP,
+  FuncNameLen, ArgsP, Dummy: NativeInt): TJOBResult;
 var
 var
   JSResult: JSValue;
   JSResult: JSValue;
 begin
 begin
@@ -133,80 +138,80 @@ begin
   Result:=Invoke_JSResult(ObjId,FuncNameP,FuncNameLen,ArgsP,JSResult);
   Result:=Invoke_JSResult(ObjId,FuncNameP,FuncNameLen,ArgsP,JSResult);
 end;
 end;
 
 
-function TWADomBridge.Invoke_BooleanResult(ObjId: TWasiDomObjectID; FuncNameP,
-  FuncNameLen, ArgsP, ResultP: NativeInt): TWasiDomResult;
+function TJOBBridge.Invoke_BooleanResult(ObjId: TJOBObjectID; FuncNameP,
+  FuncNameLen, ArgsP, ResultP: NativeInt): TJOBResult;
 var
 var
   JSResult: JSValue;
   JSResult: JSValue;
   b: byte;
   b: byte;
 begin
 begin
   // invoke
   // invoke
   Result:=Invoke_JSResult(ObjId,FuncNameP,FuncNameLen,ArgsP,JSResult);
   Result:=Invoke_JSResult(ObjId,FuncNameP,FuncNameLen,ArgsP,JSResult);
-  if Result<>WasiDomResult_Success then
+  if Result<>JOBResult_Success then
     exit;
     exit;
   // check result type
   // check result type
   if jstypeof(JSResult)<>'boolean' then
   if jstypeof(JSResult)<>'boolean' then
-    exit(GetWasiDomResult(JSResult));
+    exit(GetJOBResult(JSResult));
   if JSResult then
   if JSResult then
     b:=1
     b:=1
   else
   else
     b:=0;
     b:=0;
   // set result
   // set result
   getModuleMemoryDataView().setUint8(ResultP, b);
   getModuleMemoryDataView().setUint8(ResultP, b);
-  Result:=WasiDomResult_Boolean;
+  Result:=JOBResult_Boolean;
 end;
 end;
 
 
-function TWADomBridge.Invoke_DoubleResult(ObjId: TWasiDomObjectID; FuncNameP,
-  FuncNameLen, ArgsP, ResultP: NativeInt): TWasiDomResult;
+function TJOBBridge.Invoke_DoubleResult(ObjId: TJOBObjectID; FuncNameP,
+  FuncNameLen, ArgsP, ResultP: NativeInt): TJOBResult;
 var
 var
   JSResult: JSValue;
   JSResult: JSValue;
 begin
 begin
   // invoke
   // invoke
   Result:=Invoke_JSResult(ObjId,FuncNameP,FuncNameLen,ArgsP,JSResult);
   Result:=Invoke_JSResult(ObjId,FuncNameP,FuncNameLen,ArgsP,JSResult);
-  if Result<>WasiDomResult_Success then
+  if Result<>JOBResult_Success then
     exit;
     exit;
   // check result type
   // check result type
   if jstypeof(JSResult)<>'number' then
   if jstypeof(JSResult)<>'number' then
-    exit(GetWasiDomResult(JSResult));
+    exit(GetJOBResult(JSResult));
   // set result
   // set result
   getModuleMemoryDataView().setFloat64(ResultP, double(JSResult), env.IsLittleEndian);
   getModuleMemoryDataView().setFloat64(ResultP, double(JSResult), env.IsLittleEndian);
-  Result:=WasiDomResult_Double;
+  Result:=JOBResult_Double;
 end;
 end;
 
 
-function TWADomBridge.Invoke_StringResult(ObjId: TWasiDomObjectID; FuncNameP,
-  FuncNameLen, ArgsP, ResultP: NativeInt): TWasiDomResult;
+function TJOBBridge.Invoke_StringResult(ObjId: TJOBObjectID; FuncNameP,
+  FuncNameLen, ArgsP, ResultP: NativeInt): TJOBResult;
 var
 var
   JSResult: JSValue;
   JSResult: JSValue;
 begin
 begin
   // invoke
   // invoke
   Result:=Invoke_JSResult(ObjId,FuncNameP,FuncNameLen,ArgsP,JSResult);
   Result:=Invoke_JSResult(ObjId,FuncNameP,FuncNameLen,ArgsP,JSResult);
-  if Result<>WasiDomResult_Success then
+  if Result<>JOBResult_Success then
     exit;
     exit;
   // check result type
   // check result type
   if jstypeof(JSResult)<>'string' then
   if jstypeof(JSResult)<>'string' then
-    exit(GetWasiDomResult(JSResult));
-  Result:=WasiDomResult_String;
+    exit(GetJOBResult(JSResult));
+  Result:=JOBResult_String;
   FStringResult:=String(JSResult);
   FStringResult:=String(JSResult);
 
 
   // set result length
   // set result length
   getModuleMemoryDataView().setInt32(ResultP, length(FStringResult), env.IsLittleEndian);
   getModuleMemoryDataView().setInt32(ResultP, length(FStringResult), env.IsLittleEndian);
 end;
 end;
 
 
-function TWADomBridge.Invoke_ObjectResult(ObjId: TWasiDomObjectID; FuncNameP,
-  FuncNameLen, ArgsP, ResultP: NativeInt): TWasiDomResult;
+function TJOBBridge.Invoke_ObjectResult(ObjId: TJOBObjectID; FuncNameP,
+  FuncNameLen, ArgsP, ResultP: NativeInt): TJOBResult;
 var
 var
   t: String;
   t: String;
   JSResult, NewId: JSValue;
   JSResult, NewId: JSValue;
 begin
 begin
   // invoke
   // invoke
   Result:=Invoke_JSResult(ObjId,FuncNameP,FuncNameLen,ArgsP,JSResult);
   Result:=Invoke_JSResult(ObjId,FuncNameP,FuncNameLen,ArgsP,JSResult);
-  if Result<>WasiDomResult_Success then
+  if Result<>JOBResult_Success then
     exit;
     exit;
   // check result type
   // check result type
   t:=jstypeof(JSResult);
   t:=jstypeof(JSResult);
   if (t<>'object') and (t<>'function') then
   if (t<>'object') and (t<>'function') then
-    exit(GetWasiDomResult(JSResult));
+    exit(GetJOBResult(JSResult));
   if JSResult=nil then
   if JSResult=nil then
-    exit(WasiDomResult_Null);
+    exit(JOBResult_Null);
 
 
   // create Id
   // create Id
   NewId:=FFreeLocalIds.pop;
   NewId:=FFreeLocalIds.pop;
@@ -217,29 +222,29 @@ begin
 
 
   // set result
   // set result
   getModuleMemoryDataView().setUint32(ResultP, longword(NewId), env.IsLittleEndian);
   getModuleMemoryDataView().setUint32(ResultP, longword(NewId), env.IsLittleEndian);
-  Result:=WasiDomResult_Object;
+  Result:=JOBResult_Object;
 end;
 end;
 
 
-function TWADomBridge.ReleaseObject(ObjId: TWasiDomObjectID): TWasiDomResult;
+function TJOBBridge.ReleaseObject(ObjId: TJOBObjectID): TJOBResult;
 begin
 begin
   writeln('TWADomBridge.ReleaseObject ',ObjId);
   writeln('TWADomBridge.ReleaseObject ',ObjId);
   if ObjId<0 then
   if ObjId<0 then
-    raise EWABridge.Create('cannot release a global object');
+    raise EJOBBridge.Create('cannot release a global object');
   if ObjId>=FLocalObjects.Length then
   if ObjId>=FLocalObjects.Length then
-    raise EWABridge.Create('cannot release unknown object');
+    raise EJOBBridge.Create('cannot release unknown object');
   if FLocalObjects[ObjId]=nil then
   if FLocalObjects[ObjId]=nil then
-    raise EWABridge.Create('object already released');
+    raise EJOBBridge.Create('object already released');
   FLocalObjects[ObjId]:=nil;
   FLocalObjects[ObjId]:=nil;
   FFreeLocalIds.push(ObjId);
   FFreeLocalIds.push(ObjId);
-  Result:=WasiDomResult_Success;
+  Result:=JOBResult_Success;
 end;
 end;
 
 
-function TWADomBridge.GetStringResult(ResultP: NativeInt): TWasiDomResult;
+function TJOBBridge.GetStringResult(ResultP: NativeInt): TJOBResult;
 var
 var
   View: TJSDataView;
   View: TJSDataView;
   l, i: SizeInt;
   l, i: SizeInt;
 begin
 begin
-  Result:=WasiDomResult_Success;
+  Result:=JOBResult_Success;
   l:=length(FStringResult);
   l:=length(FStringResult);
   if l=0 then exit;
   if l=0 then exit;
   View:=getModuleMemoryDataView();
   View:=getModuleMemoryDataView();
@@ -248,13 +253,13 @@ begin
   FStringResult:='';
   FStringResult:='';
 end;
 end;
 
 
-function TWADomBridge.ReleaseStringResult: TWasiDomResult;
+function TJOBBridge.ReleaseStringResult: TJOBResult;
 begin
 begin
-  Result:=WasiDomResult_Success;
+  Result:=JOBResult_Success;
   FStringResult:='';
   FStringResult:='';
 end;
 end;
 
 
-function TWADomBridge.GetInvokeArguments(View: TJSDataView; ArgsP: NativeInt
+function TJOBBridge.GetInvokeArguments(View: TJSDataView; ArgsP: NativeInt
   ): TJSValueDynArray;
   ): TJSValueDynArray;
 var
 var
   Cnt, aType: Byte;
   Cnt, aType: Byte;
@@ -272,26 +277,26 @@ begin
     aType:=View.getUInt8(p);
     aType:=View.getUInt8(p);
     inc(p);
     inc(p);
     case aType of
     case aType of
-    WasiArgLongint:
+    JOBArgLongint:
       begin
       begin
         Result[i]:=View.getInt32(p,env.IsLittleEndian);
         Result[i]:=View.getInt32(p,env.IsLittleEndian);
         inc(p,4);
         inc(p,4);
       end;
       end;
-    WasiArgDouble:
+    JOBArgDouble:
       begin
       begin
         Result[i]:=View.getFloat64(p,env.IsLittleEndian);
         Result[i]:=View.getFloat64(p,env.IsLittleEndian);
         inc(p,8);
         inc(p,8);
       end;
       end;
-    WasiArgTrue:
+    JOBArgTrue:
       Result[i]:=true;
       Result[i]:=true;
-    WasiArgFalse:
+    JOBArgFalse:
       Result[i]:=false;
       Result[i]:=false;
-    WasiArgChar:
+    JOBArgChar:
       begin
       begin
         Result[i]:=chr(View.getUint16(p,env.IsLittleEndian));
         Result[i]:=chr(View.getUint16(p,env.IsLittleEndian));
         inc(p,2);
         inc(p,2);
       end;
       end;
-    WasiArgUTF8String:
+    JOBArgUTF8String:
       begin
       begin
         Len:=View.getUint32(p,env.IsLittleEndian);
         Len:=View.getUint32(p,env.IsLittleEndian);
         inc(p,4);
         inc(p,4);
@@ -300,7 +305,7 @@ begin
         aBytes:=TJSUint8Array.New(View.buffer, Ptr,Len);
         aBytes:=TJSUint8Array.New(View.buffer, Ptr,Len);
         Result[i]:=TypedArrayToString(aBytes);
         Result[i]:=TypedArrayToString(aBytes);
       end;
       end;
-    WasiArgUnicodeString:
+    JOBArgUnicodeString:
       begin
       begin
         Len:=View.getUint32(p,env.IsLittleEndian);
         Len:=View.getUint32(p,env.IsLittleEndian);
         inc(p,4);
         inc(p,4);
@@ -309,7 +314,7 @@ begin
         aWords:=TJSUint16Array.New(View.buffer, Ptr,Len);
         aWords:=TJSUint16Array.New(View.buffer, Ptr,Len);
         Result[i]:=TypedArrayToString(aWords);
         Result[i]:=TypedArrayToString(aWords);
       end;
       end;
-    WasiArgPointer:
+    JOBArgPointer:
       begin
       begin
         Result[i]:=View.getUint32(p,env.IsLittleEndian);
         Result[i]:=View.getUint32(p,env.IsLittleEndian);
         inc(p,4);
         inc(p,4);
@@ -321,18 +326,18 @@ begin
   end;
   end;
 end;
 end;
 
 
-function TWADomBridge.GetWasiDomResult(v: jsvalue): TWasiDomResult;
+function TJOBBridge.GetJOBResult(v: jsvalue): TJOBResult;
 begin
 begin
   case jstypeof(v) of
   case jstypeof(v) of
-  'undefined': Result:=WasiDomResult_Undefined;
-  'boolean': Result:=WasiDomResult_Boolean;
-  'number': Result:=WasiDomResult_Number;
-  'string': Result:=WasiDomResult_String;
-  'symbol': Result:=WasiDomResult_Symbol;
-  'bigint': Result:=WasiDomResult_BigInt;
-  'function': Result:=WasiDomResult_Function;
-  'object': if v=nil then Result:=WasiDomResult_Null else Result:=WasiDomResult_Object;
-  else Result:=WasiDomResult_None;
+  'undefined': Result:=JOBResult_Undefined;
+  'boolean': Result:=JOBResult_Boolean;
+  'number': Result:=JOBResult_Number;
+  'string': Result:=JOBResult_String;
+  'symbol': Result:=JOBResult_Symbol;
+  'bigint': Result:=JOBResult_BigInt;
+  'function': Result:=JOBResult_Function;
+  'object': if v=nil then Result:=JOBResult_Null else Result:=JOBResult_Object;
+  else Result:=JOBResult_None;
   end;
   end;
 end;
 end;
 
 

+ 80 - 0
demo/wasienv/dom/job_shared.pp

@@ -0,0 +1,80 @@
+{
+  JOB - JS Object Bridge for Webassembly
+
+  These types and constants are shared between pas2js and webassembly.
+}
+unit JOB_Shared;
+
+interface
+
+type
+  TJOBObjectID = NativeInt;
+
+// invoke results
+type
+  TJOBResult = longint;
+const
+  JOBResult_None = 0;
+  JOBResult_Success = 1;
+  JOBResult_UnknownObjId = 2;
+  JOBResult_NotAFunction = 3;
+  JOBResult_Undefined = 4;
+  JOBResult_Null = 5;
+  JOBResult_Boolean = 6;
+  JOBResult_Number = 7;
+  JOBResult_Double = 8;
+  JOBResult_String = 9;
+  JOBResult_Function = 10;
+  JOBResult_Object = 11;
+  JOBResult_BigInt = 12;
+  JOBResult_Symbol = 13;
+
+  JOBResultLast = 13;
+
+  JOBResult_Names: array[0..JOBResultLast] of string = (
+    'None',
+    'Success',
+    'UnknownObjId',
+    'NotAFunction',
+    'Undefined',
+    'Null',
+    'Boolean',
+    'Number',
+    'Double',
+    'String',
+    'Function',
+    'Object',
+    'BigInt',
+    'Symbol'
+    );
+
+  JOBExportName = 'job';
+  JOBFn_InvokeNoResult = 'invoke_noresult';
+  JOBFn_InvokeBooleanResult = 'invoke_boolresult';
+  JOBFn_InvokeDoubleResult = 'invoke_doubleresult';
+  JOBFn_InvokeStringResult = 'invoke_stringresult';
+  JOBFn_GetStringResult = 'get_stringresult';
+  JOBFn_ReleaseStringResult = 'release_stringresult';
+  JOBFn_InvokeObjectResult = 'invoke_objectresult';
+  JOBFn_ReleaseObject = 'release_object';
+
+  JOBArgNone = 0;
+  JOBArgLongint = 1;
+  JOBArgDouble = 2;
+  JOBArgTrue = 3;
+  JOBArgFalse = 4;
+  JOBArgChar = 5; // followed by a word
+  JOBArgUTF8String = 6; // followed by length and pointer
+  JOBArgUnicodeString = 7; // followed by length and pointer
+  JOBArgPointer = 8;
+
+  JOBObjIdDocument = -1;
+  JOBObjIdWindow = -2;
+  JOBObjIdConsole = -3;
+  JOBObjIdCaches = -4;
+
+  WasiObjIdBird = -5;
+
+implementation
+
+end.

+ 92 - 90
demo/wasienv/dom/wadom_wasm.pas → demo/wasienv/dom/job_wasm.pas

@@ -1,18 +1,20 @@
 {
 {
+  JOB - JS Object Bridge for Webassembly
+
   Webassembly unit giving access to the browser DOM.
   Webassembly unit giving access to the browser DOM.
 
 
   see https://wiki.freepascal.org/WebAssembly/DOM
   see https://wiki.freepascal.org/WebAssembly/DOM
 }
 }
-unit wadom_wasm;
+unit JOB_WAsm;
 
 
 {$mode ObjFPC}{$H+}
 {$mode ObjFPC}{$H+}
 
 
-{$define VerboseWasiDom}
+{$define VerboseJOB}
 
 
 interface
 interface
 
 
 uses
 uses
-  SysUtils, Types, Math, Classes, wadom_shared;
+  SysUtils, Types, Math, Classes, JOB_Shared;
 
 
 const
 const
   MinSafeIntDouble = -$1fffffffffffff; // -9007199254740991 54 bits (52 plus signed bit plus implicit highest bit)
   MinSafeIntDouble = -$1fffffffffffff; // -9007199254740991 54 bits (52 plus signed bit plus implicit highest bit)
@@ -22,18 +24,18 @@ Type
   EJSObject = class(Exception);
   EJSObject = class(Exception);
   EJSInvoke = class(EJSObject)
   EJSInvoke = class(EJSObject)
   public
   public
-    ObjectID: TWasiDomObjectID;
+    ObjectID: TJOBObjectID;
     FuncName: string;
     FuncName: string;
   end;
   end;
 
 
-  PWasiDomObjectID = ^TWasiDomObjectID;
-  TWasiDomInvokeOneResultFunc = function(
-      ObjID: TWasiDomObjectID;
+  PJOBObjectID = ^TJOBObjectID;
+  TJOBInvokeOneResultFunc = function(
+      ObjID: TJOBObjectID;
       FuncNameP: PChar;
       FuncNameP: PChar;
       FuncNameLen: longint;
       FuncNameLen: longint;
       ArgP: PByte;
       ArgP: PByte;
       ResultP: PByte
       ResultP: PByte
-    ): TWasiDomResult;
+    ): TJOBResult;
 
 
   TJSObject = class;
   TJSObject = class;
   TJSObjectClass = class of TJSObject;
   TJSObjectClass = class of TJSObject;
@@ -42,17 +44,17 @@ Type
 
 
   TJSObject = class(TInterfacedObject)
   TJSObject = class(TInterfacedObject)
   private
   private
-    FObjectID: TWasiDomObjectID;
+    FObjectID: TJOBObjectID;
   protected
   protected
     function InvokeJSOneResult(const aName: string; Const Args: Array of const;
     function InvokeJSOneResult(const aName: string; Const Args: Array of const;
-      const InvokeFunc: TWasiDomInvokeOneResultFunc; ResultP: PByte): TWasiDomResult;
-    procedure WasiInvokeRaise(const aName, Msg: string); virtual;
-    procedure WasiInvokeRaiseResultMismatch(const aName: string; Expected, Actual: TWasiDomResult); virtual;
+      const InvokeFunc: TJOBInvokeOneResultFunc; ResultP: PByte): TJOBResult;
+    procedure InvokeRaise(const aName, Msg: string); virtual;
+    procedure InvokeRaiseResultMismatch(const aName: string; Expected, Actual: TJOBResult); virtual;
     function CreateInvokeJSArgs(const Args: array of const): PByte; virtual;
     function CreateInvokeJSArgs(const Args: array of const): PByte; virtual;
   public
   public
-    constructor CreateFromID(aID: TWasiDomObjectID); virtual;
+    constructor CreateFromID(aID: TJOBObjectID); virtual;
     destructor Destroy; override;
     destructor Destroy; override;
-    property ObjectID: TWasiDomObjectID read FObjectID;
+    property ObjectID: TJOBObjectID read FObjectID;
     procedure InvokeJSNoResult(const aName: string; Const Args: Array of const);
     procedure InvokeJSNoResult(const aName: string; Const Args: Array of const);
     function InvokeJSBooleanResult(const aName: string; Const Args: Array of const): Boolean;
     function InvokeJSBooleanResult(const aName: string; Const Args: Array of const): Boolean;
     function InvokeJSDoubleResult(const aName: string; Const Args: Array of const): Double;
     function InvokeJSDoubleResult(const aName: string; Const Args: Array of const): Double;
@@ -65,60 +67,60 @@ Type
 var
 var
   JSDocument: TJSObject; // ToDo
   JSDocument: TJSObject; // ToDo
 
 
-function __wasibridgefn_invoke_noresult(
-  ObjID: TWasiDomObjectID;
+function __job_invoke_noresult(
+  ObjID: TJOBObjectID;
   FuncNameP: PChar;
   FuncNameP: PChar;
   FuncNameLen: longint;
   FuncNameLen: longint;
   ArgP: PByte;
   ArgP: PByte;
   Dummy: PByte
   Dummy: PByte
-): TWasiDomResult; external WasiDomExportName name WasiBridgeFn_InvokeNoResult;
+): TJOBResult; external JOBExportName name JOBFn_InvokeNoResult;
 
 
-function __wasibridgefn_invoke_boolresult(
-  ObjID: TWasiDomObjectID;
+function __job_invoke_boolresult(
+  ObjID: TJOBObjectID;
   FuncNameP: PChar;
   FuncNameP: PChar;
   FuncNameLen: longint;
   FuncNameLen: longint;
   ArgP: PByte;
   ArgP: PByte;
   ResultP: PByte // bytebool
   ResultP: PByte // bytebool
-): TWasiDomResult; external WasiDomExportName name WasiBridgeFn_InvokeBooleanResult;
+): TJOBResult; external JOBExportName name JOBFn_InvokeBooleanResult;
 
 
-function __wasibridgefn_invoke_doubleresult(
-  ObjID: TWasiDomObjectID;
+function __job_invoke_doubleresult(
+  ObjID: TJOBObjectID;
   FuncNameP: PChar;
   FuncNameP: PChar;
   FuncNameLen: longint;
   FuncNameLen: longint;
   ArgP: PByte;
   ArgP: PByte;
   ResultP: PByte // double
   ResultP: PByte // double
-): TWasiDomResult; external WasiDomExportName name WasiBridgeFn_InvokeDoubleResult;
+): TJOBResult; external JOBExportName name JOBFn_InvokeDoubleResult;
 
 
-function __wasibridgefn_invoke_stringresult(
-  ObjID: TWasiDomObjectID;
+function __job_invoke_stringresult(
+  ObjID: TJOBObjectID;
   FuncNameP: PChar;
   FuncNameP: PChar;
   FuncNameLen: longint;
   FuncNameLen: longint;
   ArgP: PByte;
   ArgP: PByte;
   ResultLenP: PByte // length
   ResultLenP: PByte // length
-): TWasiDomResult; external WasiDomExportName name WasiBridgeFn_InvokeStringResult;
+): TJOBResult; external JOBExportName name JOBFn_InvokeStringResult;
 
 
-function __wasibridgefn_getstringresult(
+function __job_getstringresult(
   ResultP: PByte
   ResultP: PByte
-): TWasiDomResult; external WasiDomExportName name WasiBridgeFn_GetStringResult;
+): TJOBResult; external JOBExportName name JOBFn_GetStringResult;
 
 
-function __wasibridgefn_releasestringresult(
-): TWasiDomResult; external WasiDomExportName name WasiBridgeFn_ReleaseStringResult;
+function __job_releasestringresult(
+): TJOBResult; external JOBExportName name JOBFn_ReleaseStringResult;
 
 
-function __wasibridgefn_invoke_objectresult(
-  ObjID: TWasiDomObjectID;
+function __job_invoke_objectresult(
+  ObjID: TJOBObjectID;
   FuncNameP: PChar;
   FuncNameP: PChar;
   FuncNameLen: longint;
   FuncNameLen: longint;
   ArgP: PByte;
   ArgP: PByte;
   ResultP: PByte // nativeint
   ResultP: PByte // nativeint
-): TWasiDomResult; external WasiDomExportName name WasiBridgeFn_InvokeObjectResult;
+): TJOBResult; external JOBExportName name JOBFn_InvokeObjectResult;
 
 
-function __wasibridgefn_release_object(
-  ObjID: TWasiDomObjectID
-): TWasiDomResult; external WasiDomExportName name WasiBridgeFn_ReleaseObject;
+function __job_release_object(
+  ObjID: TJOBObjectID
+): TJOBResult; external JOBExportName name JOBFn_ReleaseObject;
 
 
 implementation
 implementation
 
 
-{$IFDEF VerboseWasiDom}
+{$IFDEF VerboseJOB}
 function GetVarRecName(vt: word): string;
 function GetVarRecName(vt: word): string;
 begin
 begin
   case vt of
   case vt of
@@ -152,7 +154,7 @@ end;
 { TJSObject }
 { TJSObject }
 
 
 function TJSObject.InvokeJSOneResult(const aName: string; const Args: array of const;
 function TJSObject.InvokeJSOneResult(const aName: string; const Args: array of const;
-  const InvokeFunc: TWasiDomInvokeOneResultFunc; ResultP: PByte): TWasiDomResult;
+  const InvokeFunc: TJOBInvokeOneResultFunc; ResultP: PByte): TJOBResult;
 var
 var
   InvokeArgs: PByte;
   InvokeArgs: PByte;
 begin
 begin
@@ -169,7 +171,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TJSObject.WasiInvokeRaise(const aName, Msg: string);
+procedure TJSObject.InvokeRaise(const aName, Msg: string);
 var
 var
   E: EJSInvoke;
   E: EJSInvoke;
 begin
 begin
@@ -179,14 +181,14 @@ begin
   raise E;
   raise E;
 end;
 end;
 
 
-procedure TJSObject.WasiInvokeRaiseResultMismatch(const aName: string;
-  Expected, Actual: TWasiDomResult);
+procedure TJSObject.InvokeRaiseResultMismatch(const aName: string;
+  Expected, Actual: TJOBResult);
 begin
 begin
   case Actual of
   case Actual of
-  WasiDomResult_UnknownObjId: WasiInvokeRaise(aName,'unknown object id '+IntToStr(ObjectID));
-  WasiDomResult_NotAFunction: WasiInvokeRaise(aName,'object '+IntToStr(ObjectID)+' does not have a function "'+aName+'"');
+  JOBResult_UnknownObjId: InvokeRaise(aName,'unknown object id '+IntToStr(ObjectID));
+  JOBResult_NotAFunction: InvokeRaise(aName,'object '+IntToStr(ObjectID)+' does not have a function "'+aName+'"');
   else
   else
-    WasiInvokeRaise(aName,'expected '+WasiDomResult_Names[Expected]+', but got '+WasiDomResult_Names[Actual]+' from object '+IntToStr(ObjectID)+' function "'+aName+'"');
+    InvokeRaise(aName,'expected '+JOBResult_Names[Expected]+', but got '+JOBResult_Names[Actual]+' from object '+IntToStr(ObjectID)+' function "'+aName+'"');
   end;
   end;
 end;
 end;
 
 
@@ -282,7 +284,7 @@ begin
     case Args[i].VType of
     case Args[i].VType of
     vtInteger       :
     vtInteger       :
       begin
       begin
-        p^:=WasiArgLongint;
+        p^:=JOBArgLongint;
         inc(p);
         inc(p);
         PLongint(p)^:=Args[i].VInteger;
         PLongint(p)^:=Args[i].VInteger;
         inc(p,4);
         inc(p,4);
@@ -290,15 +292,15 @@ begin
     vtBoolean       :
     vtBoolean       :
       begin
       begin
         if Args[i].VBoolean then
         if Args[i].VBoolean then
-          p^:=WasiArgTrue
+          p^:=JOBArgTrue
         else
         else
-          p^:=WasiArgFalse;
+          p^:=JOBArgFalse;
         inc(p);
         inc(p);
       end;
       end;
     {$ifndef FPUNONE}
     {$ifndef FPUNONE}
     vtExtended      :
     vtExtended      :
       begin
       begin
-        p^:=WasiArgDouble;
+        p^:=JOBArgDouble;
         inc(p);
         inc(p);
         PDouble(p)^:=double(Args[i].VExtended^);
         PDouble(p)^:=double(Args[i].VExtended^);
         inc(p,8);
         inc(p,8);
@@ -306,14 +308,14 @@ begin
     {$endif}
     {$endif}
     vtChar:
     vtChar:
       begin
       begin
-        p^:=WasiArgChar;
+        p^:=JOBArgChar;
         inc(p);
         inc(p);
         PWord(p)^:=ord(Args[i].VChar);
         PWord(p)^:=ord(Args[i].VChar);
         inc(p,2);
         inc(p,2);
       end;
       end;
     vtWideChar      :
     vtWideChar      :
       begin
       begin
-        p^:=WasiArgChar;
+        p^:=JOBArgChar;
         inc(p);
         inc(p);
         PWord(p)^:=ord(Args[i].VWideChar);
         PWord(p)^:=ord(Args[i].VWideChar);
         inc(p,2);
         inc(p,2);
@@ -321,7 +323,7 @@ begin
     vtString        :
     vtString        :
       begin
       begin
         // shortstring
         // shortstring
-        p^:=WasiArgUTF8String;
+        p^:=JOBArgUTF8String;
         inc(p);
         inc(p);
         h:=PByte(Args[i].VString);
         h:=PByte(Args[i].VString);
         PNativeInt(p)^:=h^;
         PNativeInt(p)^:=h^;
@@ -332,14 +334,14 @@ begin
       end;
       end;
     vtPointer:
     vtPointer:
       begin
       begin
-        p^:=WasiArgPointer;
+        p^:=JOBArgPointer;
         inc(p);
         inc(p);
         PPointer(p)^:=Args[i].VPointer;
         PPointer(p)^:=Args[i].VPointer;
         inc(p,sizeof(Pointer));
         inc(p,sizeof(Pointer));
       end;
       end;
     vtPChar         :
     vtPChar         :
       begin
       begin
-        p^:=WasiArgUTF8String;
+        p^:=JOBArgUTF8String;
         inc(p);
         inc(p);
         h:=PByte(Args[i].VPChar);
         h:=PByte(Args[i].VPChar);
         PNativeInt(p)^:=strlen(PChar(h));
         PNativeInt(p)^:=strlen(PChar(h));
@@ -352,7 +354,7 @@ begin
     vtPWideChar     : ;
     vtPWideChar     : ;
     vtAnsiString    :
     vtAnsiString    :
       begin
       begin
-        p^:=WasiArgUTF8String;
+        p^:=JOBArgUTF8String;
         inc(p);
         inc(p);
         h:=Args[i].VAnsiString;
         h:=Args[i].VAnsiString;
         s:=AnsiString(h);
         s:=AnsiString(h);
@@ -368,7 +370,7 @@ begin
     vtInterface     : ;
     vtInterface     : ;
     vtWideString    :
     vtWideString    :
       begin
       begin
-        p^:=WasiArgUnicodeString;
+        p^:=JOBArgUnicodeString;
         inc(p);
         inc(p);
         h:=Args[i].VWideString;
         h:=Args[i].VWideString;
         ws:=WideString(h);
         ws:=WideString(h);
@@ -382,12 +384,12 @@ begin
         i64:=Args[i].VInt64^;
         i64:=Args[i].VInt64^;
         if (i64>=low(longint)) and (i64<=high(longint)) then
         if (i64>=low(longint)) and (i64<=high(longint)) then
         begin
         begin
-          p^:=WasiArgLongint;
+          p^:=JOBArgLongint;
           inc(p);
           inc(p);
           PLongint(p)^:=i64;
           PLongint(p)^:=i64;
           inc(p,4);
           inc(p,4);
         end else begin
         end else begin
-          p^:=WasiArgDouble;
+          p^:=JOBArgDouble;
           inc(p);
           inc(p);
           PDouble(p)^:=i64;
           PDouble(p)^:=i64;
           inc(p,8);
           inc(p,8);
@@ -395,7 +397,7 @@ begin
       end;
       end;
     vtUnicodeString :
     vtUnicodeString :
       begin
       begin
-        p^:=WasiArgUnicodeString;
+        p^:=JOBArgUnicodeString;
         inc(p);
         inc(p);
         h:=Args[i].VUnicodeString;
         h:=Args[i].VUnicodeString;
         us:=UnicodeString(h);
         us:=UnicodeString(h);
@@ -409,12 +411,12 @@ begin
         qw:=Args[i].VQWord^;
         qw:=Args[i].VQWord^;
         if (qw<=high(longint)) then
         if (qw<=high(longint)) then
         begin
         begin
-          p^:=WasiArgLongint;
+          p^:=JOBArgLongint;
           inc(p);
           inc(p);
           PLongint(p)^:=qw;
           PLongint(p)^:=qw;
           inc(p,4);
           inc(p,4);
         end else begin
         end else begin
-          p^:=WasiArgDouble;
+          p^:=JOBArgDouble;
           inc(p);
           inc(p);
           PDouble(p)^:=qw;
           PDouble(p)^:=qw;
           inc(p,8);
           inc(p,8);
@@ -435,7 +437,7 @@ begin
   {$ENDIF}
   {$ENDIF}
 end;
 end;
 
 
-constructor TJSObject.CreateFromID(aID: TWasiDomObjectID);
+constructor TJSObject.CreateFromID(aID: TJOBObjectID);
 begin
 begin
   FObjectID:=aID;
   FObjectID:=aID;
 end;
 end;
@@ -443,97 +445,97 @@ end;
 destructor TJSObject.Destroy;
 destructor TJSObject.Destroy;
 begin
 begin
   if ObjectID>=0 then
   if ObjectID>=0 then
-    __wasibridgefn_release_object(ObjectID);
+    __job_release_object(ObjectID);
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
 procedure TJSObject.InvokeJSNoResult(const aName: string;
 procedure TJSObject.InvokeJSNoResult(const aName: string;
   const Args: array of const);
   const Args: array of const);
 var
 var
-  aError: TWasiDomResult;
+  aError: TJOBResult;
   InvokeArgs: PByte;
   InvokeArgs: PByte;
 begin
 begin
   if length(Args)=0 then
   if length(Args)=0 then
-    aError:=__wasibridgefn_invoke_noresult(ObjectID,PChar(aName),length(aName),nil,nil)
+    aError:=__job_invoke_noresult(ObjectID,PChar(aName),length(aName),nil,nil)
   else begin
   else begin
     InvokeArgs:=CreateInvokeJSArgs(Args);
     InvokeArgs:=CreateInvokeJSArgs(Args);
     try
     try
-      aError:=__wasibridgefn_invoke_noresult(ObjectID,PChar(aName),length(aName),InvokeArgs,nil);
+      aError:=__job_invoke_noresult(ObjectID,PChar(aName),length(aName),InvokeArgs,nil);
     finally
     finally
       if InvokeArgs<>nil then
       if InvokeArgs<>nil then
         FreeMem(InvokeArgs);
         FreeMem(InvokeArgs);
     end;
     end;
   end;
   end;
-  if aError<>WasiDomResult_Success then
-    WasiInvokeRaiseResultMismatch(aName,WasiDomResult_Success,aError);
+  if aError<>JOBResult_Success then
+    InvokeRaiseResultMismatch(aName,JOBResult_Success,aError);
 end;
 end;
 
 
 function TJSObject.InvokeJSBooleanResult(const aName: string;
 function TJSObject.InvokeJSBooleanResult(const aName: string;
   const Args: array of const): Boolean;
   const Args: array of const): Boolean;
 var
 var
-  aError: TWasiDomResult;
+  aError: TJOBResult;
   b: bytebool;
   b: bytebool;
 begin
 begin
   b:=false;
   b:=false;
-  aError:=InvokeJSOneResult(aName,Args,@__wasibridgefn_invoke_boolresult,@b);
-  if aError<>WasiDomResult_Boolean then
-    WasiInvokeRaiseResultMismatch(aName,WasiDomResult_Boolean,aError);
+  aError:=InvokeJSOneResult(aName,Args,@__job_invoke_boolresult,@b);
+  if aError<>JOBResult_Boolean then
+    InvokeRaiseResultMismatch(aName,JOBResult_Boolean,aError);
   Result:=b;
   Result:=b;
 end;
 end;
 
 
 function TJSObject.InvokeJSDoubleResult(const aName: string;
 function TJSObject.InvokeJSDoubleResult(const aName: string;
   const Args: array of const): Double;
   const Args: array of const): Double;
 var
 var
-  aError: TWasiDomResult;
+  aError: TJOBResult;
 begin
 begin
   Result:=NaN;
   Result:=NaN;
-  aError:=InvokeJSOneResult(aName,Args,@__wasibridgefn_invoke_doubleresult,@Result);
-  if aError<>WasiDomResult_Double then
-    WasiInvokeRaiseResultMismatch(aName,WasiDomResult_Double,aError);
+  aError:=InvokeJSOneResult(aName,Args,@__job_invoke_doubleresult,@Result);
+  if aError<>JOBResult_Double then
+    InvokeRaiseResultMismatch(aName,JOBResult_Double,aError);
 end;
 end;
 
 
 function TJSObject.InvokeJSUnicodeStringResult(const aName: string;
 function TJSObject.InvokeJSUnicodeStringResult(const aName: string;
   const args: array of const): UnicodeString;
   const args: array of const): UnicodeString;
 var
 var
   ResultLen: NativeInt;
   ResultLen: NativeInt;
-  aError: TWasiDomResult;
+  aError: TJOBResult;
 begin
 begin
   ResultLen:=0;
   ResultLen:=0;
-  aError:=InvokeJSOneResult(aName,Args,@__wasibridgefn_invoke_stringresult,@ResultLen);
-  if aError<>WasiDomResult_String then
-    WasiInvokeRaiseResultMismatch(aName,WasiDomResult_String,aError);
+  aError:=InvokeJSOneResult(aName,Args,@__job_invoke_stringresult,@ResultLen);
+  if aError<>JOBResult_String then
+    InvokeRaiseResultMismatch(aName,JOBResult_String,aError);
   if ResultLen=0 then
   if ResultLen=0 then
     exit('');
     exit('');
   try
   try
     // try to allocate the memory
     // try to allocate the memory
     SetLength(Result,ResultLen);
     SetLength(Result,ResultLen);
-    aError:=WasiDomResult_Success;
+    aError:=JOBResult_Success;
   finally
   finally
-    if aError<>WasiDomResult_Success then
-      __wasibridgefn_releasestringresult();
+    if aError<>JOBResult_Success then
+      __job_releasestringresult();
   end;
   end;
-  __wasibridgefn_getstringresult(PByte(Result));
+  __job_getstringresult(PByte(Result));
 end;
 end;
 
 
 function TJSObject.InvokeJSObjResult(const aName: string;
 function TJSObject.InvokeJSObjResult(const aName: string;
   aResultClass: TJSObjectClass; const args: array of const): TJSObject;
   aResultClass: TJSObjectClass; const args: array of const): TJSObject;
 var
 var
-  aError: TWasiDomResult;
-  NewObjId: TWasiDomObjectID;
+  aError: TJOBResult;
+  NewObjId: TJOBObjectID;
 begin
 begin
   Result:=nil;
   Result:=nil;
   NewObjId:=-1;
   NewObjId:=-1;
-  aError:=InvokeJSOneResult(aName,Args,@__wasibridgefn_invoke_objectresult,@NewObjId);
-  if aError=WasiDomResult_Null then
+  aError:=InvokeJSOneResult(aName,Args,@__job_invoke_objectresult,@NewObjId);
+  if aError=JOBResult_Null then
     exit;
     exit;
-  if aError<>WasiDomResult_Object then
-    WasiInvokeRaiseResultMismatch(aName,WasiDomResult_Object,aError);
+  if aError<>JOBResult_Object then
+    InvokeRaiseResultMismatch(aName,JOBResult_Object,aError);
 
 
   Result:=aResultClass.CreateFromID(NewObjId);
   Result:=aResultClass.CreateFromID(NewObjId);
 end;
 end;
 
 
 initialization
 initialization
-  JSDocument:=TJSObject.CreateFromID(WasiObjIdDocument);
+  JSDocument:=TJSObject.CreateFromID(JOBObjIdDocument);
 
 
 end.
 end.
 
 

+ 0 - 78
demo/wasienv/dom/wadom_shared.pp

@@ -1,78 +0,0 @@
-{
-  These types and constants are shared between pas2js and webassembly.
-}
-unit wadom_shared;
-
-interface
-
-type
-  TWasiDomObjectID = NativeInt;
-
-// invoke results
-type
-  TWasiDomResult = longint;
-const
-  WasiDomResult_None = 0;
-  WasiDomResult_Success = 1;
-  WasiDomResult_UnknownObjId = 2;
-  WasiDomResult_NotAFunction = 3;
-  WasiDomResult_Undefined = 4;
-  WasiDomResult_Null = 5;
-  WasiDomResult_Boolean = 6;
-  WasiDomResult_Number = 7;
-  WasiDomResult_Double = 8;
-  WasiDomResult_String = 9;
-  WasiDomResult_Function = 10;
-  WasiDomResult_Object = 11;
-  WasiDomResult_BigInt = 12;
-  WasiDomResult_Symbol = 13;
-
-  WasiDomResultLast = 13;
-
-  WasiDomResult_Names: array[0..WasiDomResultLast] of string = (
-    'None',
-    'Success',
-    'UnknownObjId',
-    'NotAFunction',
-    'Undefined',
-    'Null',
-    'Boolean',
-    'Number',
-    'Double',
-    'String',
-    'Function',
-    'Object',
-    'BigInt',
-    'Symbol'
-    );
-
-  WasiDomExportName = 'wasi_dom';
-  WasiBridgeFn_InvokeNoResult = 'invoke_noresult';
-  WasiBridgeFn_InvokeBooleanResult = 'invoke_boolresult';
-  WasiBridgeFn_InvokeDoubleResult = 'invoke_doubleresult';
-  WasiBridgeFn_InvokeStringResult = 'invoke_stringresult';
-  WasiBridgeFn_GetStringResult = 'get_stringresult';
-  WasiBridgeFn_ReleaseStringResult = 'release_stringresult';
-  WasiBridgeFn_InvokeObjectResult = 'invoke_objectresult';
-  WasiBridgeFn_ReleaseObject = 'release_object';
-
-  WasiArgNone = 0;
-  WasiArgLongint = 1;
-  WasiArgDouble = 2;
-  WasiArgTrue = 3;
-  WasiArgFalse = 4;
-  WasiArgChar = 5; // followed by a word
-  WasiArgUTF8String = 6; // followed by length and pointer
-  WasiArgUnicodeString = 7; // followed by length and pointer
-  WasiArgPointer = 8;
-
-  WasiObjIdDocument = -1;
-  WasiObjIdWindow = -2;
-  WasiObjIdConsole = -3;
-  WasiObjIdCaches = -4;
-
-  WasiObjIdBird = -5;
-
-implementation
-
-end.