summaryrefslogtreecommitdiff
path: root/src/wasm.js
diff options
context:
space:
mode:
authorBen Smith <binji@chromium.org>2016-04-18 00:47:14 -0700
committerBen Smith <binji@chromium.org>2016-04-18 00:47:14 -0700
commit36a1f6a90c854523b80fa3166facb08e65dcfdbd (patch)
tree97527f91120a95c3ec46d38c3e98d42cb91efa54 /src/wasm.js
parent187be92a30fe1e409d019de0dac7954428e64f5f (diff)
downloadwabt-36a1f6a90c854523b80fa3166facb08e65dcfdbd.tar.gz
wabt-36a1f6a90c854523b80fa3166facb08e65dcfdbd.tar.bz2
wabt-36a1f6a90c854523b80fa3166facb08e65dcfdbd.zip
fix emscripten release build
The emscripten release build loads the module memory asynchronously, which means you can't call any of the module functions until it has loaded.
Diffstat (limited to 'src/wasm.js')
-rw-r--r--src/wasm.js24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/wasm.js b/src/wasm.js
index 2dabe3ed..25175686 100644
--- a/src/wasm.js
+++ b/src/wasm.js
@@ -14,7 +14,15 @@
* limitations under the License.
*/
-var wasm = (function() {
+var wasm = {};
+
+wasm.ready = new Promise(function(resolve, reject) {
+ wasm.$resolve = resolve;
+ wasm.$reject = reject;
+});
+
+var Module = {};
+Module.onRuntimeInitialized = function() {
var OK = 0;
var ERROR = 1;
@@ -328,6 +336,10 @@ var Script = function() {
};
decorateStruct(Script, 'script', []);
Script.prototype.$init = function() {};
+Script.prototype.$destroy = function() {
+ Module._wasm_destroy_script(this.$addr);
+ this.$free();
+};
// SourceErrorHandler //////////////////////////////////////////////////////////
@@ -480,7 +492,11 @@ var writeBinaryScript = function(allocator, writer, script, options) {
throw "writeBinaryScript failed";
};
-return {
+var resolve = wasm.$resolve;
+
+wasm = {
+ ready: wasm.ready,
+
OK: OK,
ERROR: ERROR,
@@ -505,4 +521,6 @@ return {
writeBinaryScript: writeBinaryScript,
};
-})();
+resolve();
+
+};