From b183126d8f8e7b078744b1f802df55950e1e2152 Mon Sep 17 00:00:00 2001 From: Clemens Backes Date: Tue, 17 Mar 2026 14:57:09 +0100 Subject: [PATCH 1/2] [threads][test][js-api] Add tests for memory buffer integrity Add JS API tests for memory buffer integrity: Shared memory buffers should be frozen, while non-shared memory buffers should be extensible. --- test/js-api/memory/integrity.any.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 test/js-api/memory/integrity.any.js diff --git a/test/js-api/memory/integrity.any.js b/test/js-api/memory/integrity.any.js new file mode 100644 index 000000000..e5cc39d85 --- /dev/null +++ b/test/js-api/memory/integrity.any.js @@ -0,0 +1,21 @@ +// META: global=window,dedicatedworker,jsshell + +test(() => { + const memory = new WebAssembly.Memory({ "initial": 1, "maximum": 2, "shared": true }); + const buffer = memory.buffer; + assert_true(Object.isFrozen(buffer), "Shared buffer should be frozen"); + assert_throws_js(TypeError, () => { + "use strict"; + buffer.x = 1; + }, "Cannot add property to frozen shared buffer"); +}, "Shared memory buffer integrity"); + +test(() => { + const memory = new WebAssembly.Memory({ "initial": 1 }); + const buffer = memory.buffer; + assert_false(Object.isFrozen(buffer), "Non-shared buffer should not be frozen"); + assert_true(Object.isExtensible(buffer), "Non-shared buffer should be extensible"); + buffer.x = 1; + assert_equals(buffer.x, 1, "Should be able to add property to non-shared buffer"); + delete buffer.x; +}, "Non-shared memory buffer integrity"); From 190b586751226d459fbc6de36406500bd10b4584 Mon Sep 17 00:00:00 2001 From: Clemens Backes Date: Tue, 17 Mar 2026 16:55:03 +0100 Subject: [PATCH 2/2] Wrap at 80 columns. --- test/js-api/memory/integrity.any.js | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/test/js-api/memory/integrity.any.js b/test/js-api/memory/integrity.any.js index e5cc39d85..f38dc86dc 100644 --- a/test/js-api/memory/integrity.any.js +++ b/test/js-api/memory/integrity.any.js @@ -1,21 +1,25 @@ // META: global=window,dedicatedworker,jsshell test(() => { - const memory = new WebAssembly.Memory({ "initial": 1, "maximum": 2, "shared": true }); + const memory = + new WebAssembly.Memory({'initial': 1, 'maximum': 2, 'shared': true}); const buffer = memory.buffer; - assert_true(Object.isFrozen(buffer), "Shared buffer should be frozen"); + assert_true(Object.isFrozen(buffer), 'Shared buffer should be frozen'); assert_throws_js(TypeError, () => { - "use strict"; + 'use strict'; buffer.x = 1; - }, "Cannot add property to frozen shared buffer"); -}, "Shared memory buffer integrity"); + }, 'Cannot add property to frozen shared buffer'); +}, 'Shared memory buffer integrity'); test(() => { - const memory = new WebAssembly.Memory({ "initial": 1 }); + const memory = new WebAssembly.Memory({'initial': 1}); const buffer = memory.buffer; - assert_false(Object.isFrozen(buffer), "Non-shared buffer should not be frozen"); - assert_true(Object.isExtensible(buffer), "Non-shared buffer should be extensible"); + assert_false( + Object.isFrozen(buffer), 'Non-shared buffer should not be frozen'); + assert_true( + Object.isExtensible(buffer), 'Non-shared buffer should be extensible'); buffer.x = 1; - assert_equals(buffer.x, 1, "Should be able to add property to non-shared buffer"); + assert_equals( + buffer.x, 1, 'Should be able to add property to non-shared buffer'); delete buffer.x; -}, "Non-shared memory buffer integrity"); +}, 'Non-shared memory buffer integrity');