Selaa lähdekoodia

* Register self

Michael Van Canneyt 9 kuukautta sitten
vanhempi
commit
8bd9ed19c2
1 muutettua tiedostoa jossa 19 lisäystä ja 10 poistoa
  1. 19 10
      packages/job/src/job_browser.pp

+ 19 - 10
packages/job/src/job_browser.pp

@@ -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