diff --git a/runtime/src/launcher/cpp/launcher.cpp b/runtime/src/launcher/cpp/launcher.cpp index f73ed1a9933..8ce022c375b 100644 --- a/runtime/src/launcher/cpp/launcher.cpp +++ b/runtime/src/launcher/cpp/launcher.cpp @@ -44,8 +44,7 @@ extern "C" KInt Konan_run_start(int argc, const char** argv) { return Konan_start(args.obj()); } -extern "C" RUNTIME_USED int Konan_main(int argc, const char** argv) { - +extern "C" RUNTIME_USED int Init_and_run_start(int argc, const char** argv, int memoryDeInit) { #ifdef KONAN_NO_CTORS_SECTION extern void _Konan_constructors(void); _Konan_constructors(); @@ -55,28 +54,28 @@ extern "C" RUNTIME_USED int Konan_main(int argc, const char** argv) { KInt exitStatus = Konan_run_start(argc, argv); - Kotlin_deinitRuntimeIfNeeded(); + if (memoryDeInit) Kotlin_deinitRuntimeIfNeeded(); return exitStatus; } +extern "C" RUNTIME_USED int Konan_main(int argc, const char** argv) { + return Init_and_run_start(argc, argv, 1); +} + #ifdef KONAN_WASM // Before we pass control to Konan_main, we need to obtain argv elements // from the javascript world. extern "C" int Konan_js_arg_size(int index); extern "C" int Konan_js_fetch_arg(int index, char* ptr); -extern "C" RUNTIME_USED int Konan_js_main(int argc, int memoryInit) { +extern "C" RUNTIME_USED int Konan_js_main(int argc, int memoryDeInit) { char** argv = (char**)konan::calloc(1, argc); for (int i = 0; i< argc; ++i) { argv[i] = (char*)konan::calloc(1, Konan_js_arg_size(i)); Konan_js_fetch_arg(i, argv[i]); } - if (memoryInit) { - return Konan_main(argc, (const char**)argv); - } else { - return Konan_run_start(argc, (const char**)argv); - } + return Init_and_run_start(argc, (const char**)argv, memoryDeInit); } #endif diff --git a/runtime/src/launcher/js/launcher.js b/runtime/src/launcher/js/launcher.js index 01212fa4169..904cea9b7e0 100644 --- a/runtime/src/launcher/js/launcher.js +++ b/runtime/src/launcher/js/launcher.js @@ -212,11 +212,7 @@ function invokeModule(inst, args) { var exit_status = 0; try { - if (isBrowser()) { - instance.exports.Kotlin_initRuntimeIfNeeded(); - } exit_status = instance.exports.Konan_js_main(args.length, isBrowser() ? 0 : 1); - // TODO: so when should we deinit runtime? } catch (e) { runtime.print("Exception executing entry point: " + e); runtime.print(e.stack);