From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../tests/debug/Debugger-onNativeCall-10.js | 95 ++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 js/src/jit-test/tests/debug/Debugger-onNativeCall-10.js (limited to 'js/src/jit-test/tests/debug/Debugger-onNativeCall-10.js') diff --git a/js/src/jit-test/tests/debug/Debugger-onNativeCall-10.js b/js/src/jit-test/tests/debug/Debugger-onNativeCall-10.js new file mode 100644 index 0000000000..bb8c36ca67 --- /dev/null +++ b/js/src/jit-test/tests/debug/Debugger-onNativeCall-10.js @@ -0,0 +1,95 @@ +// Test that the onNativeCall get additional info +// when using inspectNativeCallArguments + +load(libdir + "asserts.js"); + +var g = newGlobal({ newCompartment: true }); +var dbg = new Debugger(); +var gdbg = dbg.addDebuggee(g); + +g.eval(` +var x = [1]; +var callArg = () => true; +function f() { + x.push(42, 26); + x.find(callArg); + x.toString.call(2); + new Function("code"); +} +`); + +let rv = []; +dbg.onNativeCall = (callee, reason, object, args) => { + rv.push({ + name: callee.name, + cls: object?.class || null, + args: args ? args.unsafeDereference().map(a => a.unsafeDereference ? a.unsafeDereference() : a) : null, + }); +}; + +g.f(); + +// Trace without native arguments +assertEq(dbg.inspectNativeCallArguments, false); +assertEq(rv.length, 5); +assertDeepEq(rv, [ + { + name: "push", + cls: null, + args: null, + }, + { + name: "find", + cls: null, + args: null, + }, + { + name: "call", + cls: null, + args: null, + }, + { + name: "toString", + cls: null, + args: null, + }, + { + name: "Function", + cls:null, + args:null, + }, +]); + +// Trace with native arguments +rv = []; +dbg.inspectNativeCallArguments = true; +assertEq(dbg.inspectNativeCallArguments, true); +g.f(); +assertEq(rv.length, 5); +assertDeepEq(rv, [ + { + name: "push", + cls: "Array", + args: [42, 26], + }, + { + name: "find", + cls: "Array", + args: [g.callArg], + }, + { + name: "call", + cls: "Function", + args: [2], + }, + { + name: "toString", + cls: null, + args: [], + }, + { + name: "Function", + cls: null, + args:["code"], + }, +]); -- cgit v1.2.3