diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /js/src/jit-test/tests/debug/Debugger-onNativeCall-10.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/jit-test/tests/debug/Debugger-onNativeCall-10.js')
-rw-r--r-- | js/src/jit-test/tests/debug/Debugger-onNativeCall-10.js | 95 |
1 files changed, 95 insertions, 0 deletions
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"], + }, +]); |