Browse Source

* DebugObject call

Michael Van Canneyt 10 months ago
parent
commit
193eeb8483
2 changed files with 24 additions and 0 deletions
  1. 23 0
      packages/job/src/job_browser.pp
  2. 1 0
      packages/job/src/job_shared.pp

+ 23 - 0
packages/job/src/job_browser.pp

@@ -104,6 +104,7 @@ Type
     function Invoke_ArrayStringResult(ObjId: TJOBObjectID; NameP, NameLen, Invoke, ArgsP, ResultP: NativeInt): TJOBResult; virtual;
     function ReleaseObject(ObjId: TJOBObjectID): TJOBResult; virtual;
     function GetStringResult(ResultP: NativeInt): TJOBResult; virtual;
+    function DebugObject(ObjId: TJOBObjectID; aMessage: TWasmPointer; aMessageLen: Integer; aFlags: Longint): TJOBResult;
     function ReleaseStringResult: TJOBResult; virtual;
   Public
     Constructor Create(aEnv: TPas2JSWASIEnvironment); override;
@@ -270,6 +271,7 @@ begin
   aObject[JOBFn_CreateObject]:=@Create_JSObject;
   aObject[JOBFn_SetMemFromArray]:=@SetMemFromArray;
   aObject[JOBFn_SetArrayFromMem]:=@SetArrayFromMem;
+  aObject[JOBFn_DebugObject]:=@DebugObject;
 end;
 
 function TJSObjectBridge.FindObject(ObjId: TJOBObjectID): TJSObject;
@@ -743,6 +745,27 @@ begin
   FStringResult:='';
 end;
 
+function TJSObjectBridge.DebugObject(ObjId: TJOBObjectID; aMessage : TWasmPointer; aMessageLen : Integer; aFlags: Longint): TJOBResult;
+
+var
+  Obj : TJSObject;
+  S : String;
+
+begin
+  S:=Env.GetUTF8StringFromMem(aMessage,aMessageLen);
+  Obj:=FindObject(ObjId);
+  if not assigned(Obj) then
+    begin
+    Result:=JOBResult_UnknownObjId;
+    console.warn('Cannot find object ',ObjId);
+    end
+  else
+    begin
+    console.debug(S,' dumping object ',ObjID,' : ',Obj);
+    Result:=JOBResult_Success;
+    end;
+end;
+
 function TJSObjectBridge.ReleaseStringResult: TJOBResult;
 begin
   Result:=JOBResult_Success;

+ 1 - 0
packages/job/src/job_shared.pp

@@ -69,6 +69,7 @@ const
   JOBFn_CallbackHandler = 'JOBCallback';
   JOBFn_SetMemFromArray = 'set_mem_from_object';
   JOBFn_SetArrayFromMem = 'set_object_from_mem';
+  JOBFn_DebugObject = 'debug_object';
 
   JOBArgUndefined = 0;
   JOBArgLongint = 1;