Browse Source

* Make methodcallback a named method, helps in browser debugger stack view

Michaël Van Canneyt 1 year ago
parent
commit
6530fde036
1 changed files with 17 additions and 9 deletions
  1. 17 9
      packages/job/src/job_browser.pp

+ 17 - 9
packages/job/src/job_browser.pp

@@ -11,6 +11,7 @@ unit JOB_Browser;
 {$modeswitch externalclass}
 {$modeswitch externalclass}
 
 
 {off $DEFINE VerboseJOB}
 {off $DEFINE VerboseJOB}
+{off $define VerboseJOBCallback}
 
 
 interface
 interface
 
 
@@ -270,7 +271,7 @@ function TJSObjectBridge.FindGlobalObject(const aName: string): TJOBObjectID;
 begin
 begin
   // this one is special, it needs to be re-registered every time
   // this one is special, it needs to be re-registered every time
   if aName='InstanceMemory' then
   if aName='InstanceMemory' then
-    Exit(RegisterLocalObject(TJSUint8Array.New(getModuleMemoryDataView.buffer)));
+    Exit(RegisterLocalObject(TJSUint8Array.New(getModuleMemoryDataView.buffer)))
   else
   else
     begin
     begin
     if not FGlobalNames.hasOwnProperty(aName) then
     if not FGlobalNames.hasOwnProperty(aName) then
@@ -652,23 +653,22 @@ var
   p: NativeInt;
   p: NativeInt;
 
 
   function ReadWasmNativeInt: TWasmNativeInt;
   function ReadWasmNativeInt: TWasmNativeInt;
+
   begin
   begin
     Result:=View.getInt32(p,env.IsLittleEndian);
     Result:=View.getInt32(p,env.IsLittleEndian);
     inc(p,4);
     inc(p,4);
   end;
   end;
 
 
+
   function ReadArgMethod: TProxyFunc;
   function ReadArgMethod: TProxyFunc;
+
   var
   var
     aCall, aData, aCode: TWasmNativeInt;
     aCall, aData, aCode: TWasmNativeInt;
-    i: Integer;
-  begin
-    aCall:=ReadWasmNativeInt;
-    aData:=ReadWasmNativeInt;
-    aCode:=ReadWasmNativeInt;
+    Obj : TJSObject absolute Result;
 
 
-    Result:=function: jsvalue
+    function MethodCallBack: jsvalue;
       var
       var
-        Args, ResultP: TWasmNativeInt;
+        i, Args, ResultP: TWasmNativeInt;
         TempObjIds: TJOBObjectIDArray;
         TempObjIds: TJOBObjectIDArray;
       begin
       begin
         {$IFDEF VerboseJOBCallback}
         {$IFDEF VerboseJOBCallback}
@@ -677,7 +677,7 @@ var
         Args:=CreateCallbackArgs(View,JSArguments,TempObjIds);
         Args:=CreateCallbackArgs(View,JSArguments,TempObjIds);
         try
         try
           {$IFDEF VerboseJOBCallback}
           {$IFDEF VerboseJOBCallback}
-          writeln('TJSObjectBridge Callback: calling Wasm...');
+          writeln('TJSObjectBridge Callback: calling Wasm with');
           {$ENDIF}
           {$ENDIF}
           ResultP:=CallbackHandler(aCall,aData,aCode,Args); // this frees Args, and may detach View
           ResultP:=CallbackHandler(aCall,aData,aCode,Args); // this frees Args, and may detach View
           View:=getModuleMemoryDataView();
           View:=getModuleMemoryDataView();
@@ -696,6 +696,13 @@ var
             ReleaseObject(TempObjIds[i]);
             ReleaseObject(TempObjIds[i]);
         end;
         end;
       end;
       end;
+
+  begin
+    aCall:=ReadWasmNativeInt;
+    aData:=ReadWasmNativeInt;
+    aCode:=ReadWasmNativeInt;
+
+    Result:=@MethodCallBack;
   end;
   end;
 
 
   function ReadString: String;
   function ReadString: String;
@@ -869,6 +876,7 @@ var
   s: String;
   s: String;
   NewId: TJOBObjectID;
   NewId: TJOBObjectID;
   p: LongWord;
   p: LongWord;
+
 begin
 begin
   Result:=0;
   Result:=0;
   if Args.Length=0 then exit;
   if Args.Length=0 then exit;