diff options
-rw-r--r-- | src/js/binaryen.js-post.js | 9 | ||||
-rw-r--r-- | test/binaryen.js/kitchen-sink.js | 11 | ||||
-rw-r--r-- | test/binaryen.js/kitchen-sink.js.txt | 1 |
3 files changed, 16 insertions, 5 deletions
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index b6ea7dee1..f2e5c464e 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -2519,8 +2519,13 @@ function wrapModule(module, self = {}) { return Module['_BinaryenGetNumMemorySegments'](module); }; self['getMemorySegmentInfoByIndex'] = function(id) { + const passive = Boolean(Module['_BinaryenGetMemorySegmentPassive'](module, id)); + let offset = null; + if (!passive) { + offset = Module['_BinaryenGetMemorySegmentByteOffset'](module, id); + } return { - 'offset': Module['_BinaryenGetMemorySegmentByteOffset'](module, id), + 'offset': offset, 'data': (function(){ const size = Module['_BinaryenGetMemorySegmentByteLength'](module, id); const ptr = _malloc(size); @@ -2530,7 +2535,7 @@ function wrapModule(module, self = {}) { _free(ptr); return res.buffer; })(), - 'passive': Boolean(Module['_BinaryenGetMemorySegmentPassive'](module, id)) + 'passive': passive }; }; self['setStart'] = function(start) { diff --git a/test/binaryen.js/kitchen-sink.js b/test/binaryen.js/kitchen-sink.js index d72ffcec0..ecfc73bff 100644 --- a/test/binaryen.js/kitchen-sink.js +++ b/test/binaryen.js/kitchen-sink.js @@ -1091,9 +1091,9 @@ function test_for_each() { assert(module.getExportByIndex(i) === exps[i]); } - var expected_offsets = [10, 125]; - var expected_data = ["hello, world", "segment data 2"]; - var expected_passive = [false, false]; + var expected_offsets = [10, 125, null]; + var expected_data = ["hello, world", "segment data 2", "hello, passive"]; + var expected_passive = [false, false, true]; var glos = [ module.addGlobal("a-global", binaryen.i32, false, module.i32.const(expected_offsets[1])), @@ -1115,6 +1115,11 @@ function test_for_each() { passive: expected_passive[1], offset: module.global.get("a-global"), data: expected_data[1].split('').map(function(x) { return x.charCodeAt(0) }) + }, + { + passive: expected_passive[2], + offset: expected_offsets[2], + data: expected_data[2].split('').map(function(x) { return x.charCodeAt(0) }) } ], false); for (i = 0; i < module.getNumMemorySegments(); i++) { diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt index 70be70e61..b45894c7a 100644 --- a/test/binaryen.js/kitchen-sink.js.txt +++ b/test/binaryen.js/kitchen-sink.js.txt @@ -4860,6 +4860,7 @@ sizeof Literal: 24 (memory $0 1 256) (data (i32.const 10) "hello, world") (data (global.get $a-global) "segment data 2") + (data "hello, passive") (table $t0 1 funcref) (elem $e0 (i32.const 0) $fn0 $fn1 $fn2) (export "export0" (func $fn0)) |