summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/wasm/gc/debugger.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/wasm/gc/debugger.js')
-rw-r--r--js/src/jit-test/tests/wasm/gc/debugger.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/wasm/gc/debugger.js b/js/src/jit-test/tests/wasm/gc/debugger.js
new file mode 100644
index 0000000000..dea6581eb8
--- /dev/null
+++ b/js/src/jit-test/tests/wasm/gc/debugger.js
@@ -0,0 +1,38 @@
+// |jit-test| skip-if: !wasmDebuggingEnabled()
+
+(function() {
+ let g = newGlobal({newCompartment: true});
+ let dbg = new Debugger(g);
+ g.eval(`o = new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary('(module (func (param externref) (result externref) local.get 0) (export "" (func 0)))')));`);
+})();
+
+(function() {
+ var g = newGlobal({newCompartment: true});
+ g.parent = this;
+
+ let src = `
+ (module
+ (func (export "func") (param $ref externref) (result externref)
+ local.get $ref
+ )
+ )
+ `;
+
+ g.eval(`
+ var obj = { somekey: 'somevalue' };
+ Debugger(parent).onEnterFrame = function(frame) {
+ let v = frame.environment.getVariable('var0');
+ assertEq(typeof v, 'object');
+
+ let prop = v.unwrap().getOwnPropertyDescriptor('somekey');
+ assertEq(typeof prop, 'object');
+ assertEq(typeof prop.value, 'string');
+ assertEq(prop.value, 'somevalue');
+
+ // Disable onEnterFrame hook.
+ Debugger(parent).onEnterFrame = undefined;
+ };
+ `);
+
+ new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary(`${src}`))).exports.func(g.obj);
+})();