summaryrefslogtreecommitdiff
path: root/src/js/binaryen.js-post.js
diff options
context:
space:
mode:
authorMax Graey <maxgraey@gmail.com>2022-07-29 07:15:35 +0300
committerGitHub <noreply@github.com>2022-07-29 04:15:35 +0000
commitd02c260619e5d068b6893d4948de0487d0f1f66d (patch)
treebeba5a15fb0ace5bd34a4135efecc54deb754bc6 /src/js/binaryen.js-post.js
parent0cd9fb599fc5a44df7774d5f180d912ccab8c941 (diff)
downloadbinaryen-d02c260619e5d068b6893d4948de0487d0f1f66d.tar.gz
binaryen-d02c260619e5d068b6893d4948de0487d0f1f66d.tar.bz2
binaryen-d02c260619e5d068b6893d4948de0487d0f1f66d.zip
[JS Api] Reuse C-Api for emitText and emitStackIR (#4832)
Make the C API match the JS API and fix an old bug where extra newlines were emitted.
Diffstat (limited to 'src/js/binaryen.js-post.js')
-rw-r--r--src/js/binaryen.js-post.js22
1 files changed, 8 insertions, 14 deletions
diff --git a/src/js/binaryen.js-post.js b/src/js/binaryen.js-post.js
index 9e1534070..d2a8eb7f5 100644
--- a/src/js/binaryen.js-post.js
+++ b/src/js/binaryen.js-post.js
@@ -2616,22 +2616,16 @@ function wrapModule(module, self = {}) {
return Module['_BinaryenGetElementSegmentByIndex'](module, index);
};
self['emitText'] = function() {
- const old = out;
- let ret = '';
- out = x => { ret += x + '\n' };
- Module['_BinaryenModulePrint'](module);
- out = old;
- return ret;
+ let textPtr = Module['_BinaryenModuleAllocateAndWriteText'](module);
+ let text = UTF8ToString(textPtr);
+ if (textPtr) _free(textPtr);
+ return text;
};
self['emitStackIR'] = function(optimize) {
- self['runPasses'](['generate-stack-ir']);
- if (optimize) self['runPasses'](['optimize-stack-ir']);
- const old = out;
- let ret = '';
- out = x => { ret += x + '\n' };
- self['runPasses'](['print-stack-ir']);
- out = old;
- return ret;
+ let textPtr = Module['_BinaryenModuleAllocateAndWriteStackIR'](module, optimize);
+ let text = UTF8ToString(textPtr);
+ if (textPtr) _free(textPtr);
+ return text;
};
self['emitAsmjs'] = function() {
const old = out;