From 5ede1a1226edada5cf3825801a0e8b0d32809e74 Mon Sep 17 00:00:00 2001 From: eska Date: Wed, 30 Nov 2016 22:47:19 +0100 Subject: [PATCH] Emit asm.js code into a dedicated file for asm.js export This helps prevent browser lockups during start-up at the cost of having to distribute an extra file. --- platform/javascript/detect.py | 1 + platform/javascript/export/export.cpp | 6 +++++ tools/dist/html_fs/godot.html | 37 +++++++++++++++++---------- 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/platform/javascript/detect.py b/platform/javascript/detect.py index 2ac12c5f6fc..5390e9bee7e 100644 --- a/platform/javascript/detect.py +++ b/platform/javascript/detect.py @@ -91,6 +91,7 @@ def configure(env): env.Append(LINKFLAGS=['--compression', lzma_binpath + "," + lzma_decoder + "," + lzma_dec]) env.Append(LINKFLAGS=['-s', 'ASM_JS=1']) + env.Append(LINKFLAGS=['--separate-asm']) env.Append(LINKFLAGS=['-O2']) # env.Append(LINKFLAGS=['-g4']) diff --git a/platform/javascript/export/export.cpp b/platform/javascript/export/export.cpp index f934916aa26..bcc02f3bafc 100644 --- a/platform/javascript/export/export.cpp +++ b/platform/javascript/export/export.cpp @@ -183,6 +183,7 @@ void EditorExportPlatformJavaScript::_fix_html(Vector& p_html, const St current_line = current_line.replace("$GODOT_FS",p_name+"fs.js"); current_line = current_line.replace("$GODOT_MEM",p_name+".mem"); current_line = current_line.replace("$GODOT_JS",p_name+".js"); + current_line = current_line.replace("$GODOT_ASM",p_name+".asm.js"); current_line = current_line.replace("$GODOT_CANVAS_WIDTH",Globals::get_singleton()->get("display/width")); current_line = current_line.replace("$GODOT_CANVAS_HEIGHT",Globals::get_singleton()->get("display/height")); current_line = current_line.replace("$GODOT_HEAD_TITLE",!html_title.empty()?html_title:(String) Globals::get_singleton()->get("application/name")); @@ -323,6 +324,11 @@ Error EditorExportPlatformJavaScript::export_project(const String& p_path, bool file=p_path.get_file().basename()+".js"; } + if (file=="godot.asm.js") { + + file=p_path.get_file().basename()+".asm.js"; + } + if (file=="godot.mem") { //_fix_godot(data); diff --git a/tools/dist/html_fs/godot.html b/tools/dist/html_fs/godot.html index c354826e1f0..ee5b34e2efa 100644 --- a/tools/dist/html_fs/godot.html +++ b/tools/dist/html_fs/godot.html @@ -354,21 +354,30 @@