diff options
author | Thomas Lively <tlively@google.com> | 2023-04-04 11:33:15 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-04 11:33:15 -0700 |
commit | a802fbe07c270f510c87dfa93577bd4731c075f3 (patch) | |
tree | 4c67b39ced46258593f6904bba4a5ac20292886c /src/js | |
parent | 05e1183954e49f8b3a1669cc7973af590afe9fc3 (diff) | |
download | binaryen-a802fbe07c270f510c87dfa93577bd4731c075f3.tar.gz binaryen-a802fbe07c270f510c87dfa93577bd4731c075f3.tar.bz2 binaryen-a802fbe07c270f510c87dfa93577bd4731c075f3.zip |
Use Names instead of indices to identify segments (#5618)
All top-level Module elements are identified and referred to by Name, but for
historical reasons element and data segments were referred to by index instead.
Fix this inconsistency by using Names to refer to segments from expressions that
use them. Also parse and print segment names like we do for other elements.
The C API is partially converted to use names instead of indices, but there are
still many functions that refer to data segments by index. Finishing the
conversion can be done in the future once it becomes necessary.
Diffstat (limited to 'src/js')
-rw-r--r-- | src/js/binaryen.js-post.js | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js index 50cac2a1c..35f5d9a5c 100644 --- a/src/js/binaryen.js-post.js +++ b/src/js/binaryen.js-post.js @@ -758,7 +758,7 @@ function wrapModule(module, self = {}) { return Module['_BinaryenMemoryGrow'](module, value, strToStack(name), memory64); }, 'init'(segment, dest, offset, size, name) { - return Module['_BinaryenMemoryInit'](module, segment, dest, offset, size, strToStack(name)); + return preserveStack(() => Module['_BinaryenMemoryInit'](module, strToStack(segment), dest, offset, size, strToStack(name))); }, 'copy'(dest, source, size, destMemory, sourceMemory) { return Module['_BinaryenMemoryCopy'](module, dest, source, size, strToStack(destMemory), strToStack(sourceMemory)); @@ -781,7 +781,7 @@ function wrapModule(module, self = {}) { self['data'] = { 'drop'(segment) { - return Module['_BinaryenDataDrop'](module, segment); + return preserveStack(() => Module['_BinaryenDataDrop'](module, strToStack(segment))); } } @@ -3172,7 +3172,7 @@ Module['getExpressionInfo'] = function(expr) { case Module['MemoryInitId']: return { 'id': id, - 'segment': Module['_BinaryenMemoryInitGetSegment'](expr), + 'segment': UTF8ToString(Module['_BinaryenMemoryInitGetSegment'](expr)), 'dest': Module['_BinaryenMemoryInitGetDest'](expr), 'offset': Module['_BinaryenMemoryInitGetOffset'](expr), 'size': Module['_BinaryenMemoryInitGetSize'](expr) @@ -3180,7 +3180,7 @@ Module['getExpressionInfo'] = function(expr) { case Module['DataDropId']: return { 'id': id, - 'segment': Module['_BinaryenDataDropGetSegment'](expr), + 'segment': UTF8ToString(Module['_BinaryenDataDropGetSegment'](expr)), }; case Module['MemoryCopyId']: return { @@ -4543,10 +4543,10 @@ Module['SIMDLoadStoreLane'] = makeExpressionWrapper({ Module['MemoryInit'] = makeExpressionWrapper({ 'getSegment'(expr) { - return Module['_BinaryenMemoryInitGetSegment'](expr); + return UTF8ToString(Module['_BinaryenMemoryInitGetSegment'](expr)); }, - 'setSegment'(expr, segmentIndex) { - Module['_BinaryenMemoryInitSetSegment'](expr, segmentIndex); + 'setSegment'(expr, segment) { + preserveStack(() => Module['_BinaryenMemoryInitSetSegment'](expr, strToStack(segment))); }, 'getDest'(expr) { return Module['_BinaryenMemoryInitGetDest'](expr); @@ -4570,10 +4570,10 @@ Module['MemoryInit'] = makeExpressionWrapper({ Module['DataDrop'] = makeExpressionWrapper({ 'getSegment'(expr) { - return Module['_BinaryenDataDropGetSegment'](expr); + return UTF8ToString(Module['_BinaryenDataDropGetSegment'](expr)); }, - 'setSegment'(expr, segmentIndex) { - Module['_BinaryenDataDropSetSegment'](expr, segmentIndex); + 'setSegment'(expr, segment) { + preserveStack(() => Module['_BinaryenDataDropSetSegment'](expr, strToStack(segment))); } }); |