Improve async instantiation (#2566)

This commit is contained in:
Sergey Rubanov
2019-01-25 08:19:26 +03:00
committed by Nikolay Igotti
parent a90ca27264
commit 21852ec2a3
+6 -8
View File
@@ -193,13 +193,11 @@ function invokeModule(inst, args) {
return exit_status; return exit_status;
} }
// Instantiate module in Browser in a sequence of promises. // Instantiate module in Browser.
function instantiateAndRun(arraybuffer, args) { function instantiateAndRun(arraybuffer, args) {
WebAssembly.compile(arraybuffer) linkJavaScriptLibraries();
.then(module => { WebAssembly.instantiate(arraybuffer, konan_dependencies)
linkJavaScriptLibraries(); .then(resultObject => invokeModule(resultObject.instance, args));
return WebAssembly.instantiate(module, konan_dependencies);
}).then(instance => invokeModule(instance, args));
} }
// Instantiate module in d8 synchronously. // Instantiate module in d8 synchronously.
@@ -211,11 +209,11 @@ function instantiateAndRunSync(arraybuffer, args) {
} }
// Instantiate module in Browser as a promise of streaming instantiation. // Instantiate module in Browser using streaming instantiation.
function instantiateAndRunStreaming(filename) { function instantiateAndRunStreaming(filename) {
linkJavaScriptLibraries(); linkJavaScriptLibraries();
WebAssembly.instantiateStreaming(fetch(filename), konan_dependencies) WebAssembly.instantiateStreaming(fetch(filename), konan_dependencies)
.then(resultObject => invokeModule(resultObject.instance, [filename])); .then(resultObject => invokeModule(resultObject.instance, [filename]));
} }
konan.moduleEntry = function (args) { konan.moduleEntry = function (args) {