* Register self

This commit is contained in:
Michael Van Canneyt 2024-12-05 17:43:49 +01:00
parent d1e1a5103f
commit 8bd9ed19c2

View File

@ -85,6 +85,7 @@ Type
procedure SetArrayFromMem(ObjId: TJOBObjectID; Mem: TWasmPointer; aMaxLen: NativeInt);
procedure SetMemFromArray(ObjId: TJOBObjectID; Mem: TWasmPointer; aMaxLen: NativeInt);
Protected
procedure RegisterGlobalObjects; virtual;
procedure SetInstanceExports(const AValue: TWasiExports); override;
function DecodeUTF16Buffer(Arr : TJSUint16Array) : String;
function DecodeUTF8Buffer(Arr : TJSUint8Array) : String;
@ -187,19 +188,22 @@ begin
end;
var
{$IFDEF JOB_WORKER}
Self_ : TJSDedicatedWorkerGlobalScope; external name 'self';
{$ELSE}
CSS : TJSObject; external name 'CSS';
{$ENDIF}
procedure TJSObjectBridge.RegisterGlobalObjects;
constructor TJSObjectBridge.Create(aEnv: TPas2JSWASIEnvironment);
begin
Inherited Create(aEnv);
FGlobalObjects:=TJSArray.new;
FGlobalObjects.push(nil); // allocate FGlobalObjects[0]
FGlobalNames:=TJSObject.new;
{$IFNDEF JOB_WORKER}
RegisterGlobalObject(document,'document');
RegisterGlobalObject(window,'window');
RegisterGlobalObject(CSS,'CSS');
RegisterGlobalObject(caches,'caches');
{$ELSE}
RegisterGlobalObject(Self_,'self');
{$ENDIF}
RegisterGlobalObject(console,'console');
RegisterGlobalObject(TJSObject,'Object');
@ -219,6 +223,16 @@ begin
RegisterGlobalObject(TJSJSON,'JSON');
RegisterGlobalObject(TJSPromise,'Promise');
RegisterGlobalObject(TJSAtomics,'Atomics');
end;
constructor TJSObjectBridge.Create(aEnv: TPas2JSWASIEnvironment);
begin
Inherited Create(aEnv);
FGlobalObjects:=TJSArray.new;
FGlobalObjects.push(nil); // allocate FGlobalObjects[0]
FGlobalNames:=TJSObject.new;
RegisterGlobalObjects;
FLocalObjects:=TJSArray.new;
FLocalObjects.push(nil); // allocate FLocalObjects[0]
FFreeLocalIds:=TJSArray.new;
@ -591,11 +605,6 @@ begin
Result:=JOBResult_Object;
end;
{$IFDEF JOB_WORKER}
var
Self_ : TJSDedicatedWorkerGlobalScope; external name 'self';
{$ENDIF}
function TJSObjectBridge.GetObjectConstructor(aObjectName : String): TJSFunction;
var