Remove obsolete runtime memory initialization code from js.
Handle everything in runtime. In addition the fix fixes global ctros issue in the browser.
This commit is contained in:
committed by
alexander-gorshenev
parent
afc7d1dd9e
commit
eec6f399fb
@@ -44,8 +44,7 @@ extern "C" KInt Konan_run_start(int argc, const char** argv) {
|
|||||||
return Konan_start(args.obj());
|
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
|
#ifdef KONAN_NO_CTORS_SECTION
|
||||||
extern void _Konan_constructors(void);
|
extern void _Konan_constructors(void);
|
||||||
_Konan_constructors();
|
_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);
|
KInt exitStatus = Konan_run_start(argc, argv);
|
||||||
|
|
||||||
Kotlin_deinitRuntimeIfNeeded();
|
if (memoryDeInit) Kotlin_deinitRuntimeIfNeeded();
|
||||||
|
|
||||||
return exitStatus;
|
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
|
#ifdef KONAN_WASM
|
||||||
// Before we pass control to Konan_main, we need to obtain argv elements
|
// Before we pass control to Konan_main, we need to obtain argv elements
|
||||||
// from the javascript world.
|
// from the javascript world.
|
||||||
extern "C" int Konan_js_arg_size(int index);
|
extern "C" int Konan_js_arg_size(int index);
|
||||||
extern "C" int Konan_js_fetch_arg(int index, char* ptr);
|
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);
|
char** argv = (char**)konan::calloc(1, argc);
|
||||||
for (int i = 0; i< argc; ++i) {
|
for (int i = 0; i< argc; ++i) {
|
||||||
argv[i] = (char*)konan::calloc(1, Konan_js_arg_size(i));
|
argv[i] = (char*)konan::calloc(1, Konan_js_arg_size(i));
|
||||||
Konan_js_fetch_arg(i, argv[i]);
|
Konan_js_fetch_arg(i, argv[i]);
|
||||||
}
|
}
|
||||||
if (memoryInit) {
|
return Init_and_run_start(argc, (const char**)argv, memoryDeInit);
|
||||||
return Konan_main(argc, (const char**)argv);
|
|
||||||
} else {
|
|
||||||
return Konan_run_start(argc, (const char**)argv);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -212,11 +212,7 @@ function invokeModule(inst, args) {
|
|||||||
var exit_status = 0;
|
var exit_status = 0;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (isBrowser()) {
|
|
||||||
instance.exports.Kotlin_initRuntimeIfNeeded();
|
|
||||||
}
|
|
||||||
exit_status = instance.exports.Konan_js_main(args.length, isBrowser() ? 0 : 1);
|
exit_status = instance.exports.Konan_js_main(args.length, isBrowser() ? 0 : 1);
|
||||||
// TODO: so when should we deinit runtime?
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
runtime.print("Exception executing entry point: " + e);
|
runtime.print("Exception executing entry point: " + e);
|
||||||
runtime.print(e.stack);
|
runtime.print(e.stack);
|
||||||
|
|||||||
Reference in New Issue
Block a user