From b233e6182b5f16024b051c771bd787f17a3aca50 Mon Sep 17 00:00:00 2001 From: Bryan Gin-ge Chen Date: Fri, 10 Jan 2020 13:39:02 -0500 Subject: [PATCH 1/2] fix error-handling in worker, tweak example (#288) --- examples/GUI/gui.js | 4 ++++ src/worker.coffee | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/examples/GUI/gui.js b/examples/GUI/gui.js index f60db2b3..df499ab3 100644 --- a/examples/GUI/gui.js +++ b/examples/GUI/gui.js @@ -32,6 +32,10 @@ function execute(commands) { worker.onmessage = function (event) { var results = event.data.results; toc("Executing SQL"); + if (!results) { + error({message: event.data.error}); + return; + } tic(); outputElm.innerHTML = ""; diff --git a/src/worker.coffee b/src/worker.coffee index 281d123d..1fa63288 100644 --- a/src/worker.coffee +++ b/src/worker.coffee @@ -48,4 +48,8 @@ if typeof importScripts is 'function' # Detect webworker context when 'close' db?.close() else - throw new 'Invalid action : ' + data?['action'] + throw new Error 'Invalid action : ' + data?['action'] + .catch (err) -> + postMessage + 'id': event['data']['id'] + 'error': err['message'] From da24f7f7e15c7484da41af22e5f2bcee774d9a01 Mon Sep 17 00:00:00 2001 From: "Christopher J. Brody" Date: Sun, 12 Jan 2020 10:00:33 -0500 Subject: [PATCH 2/2] use more constants in Makefile --- Makefile | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index bccfed23..c758124c 100644 --- a/Makefile +++ b/Makefile @@ -37,6 +37,13 @@ EMFLAGS = \ -s SINGLE_FILE=0 \ -s NODEJS_CATCH_EXIT=0 +EMFLAGS_ASM = \ + -s WASM=0 + +EMFLAGS_ASM_MEMORY_GROWTH = \ + -s WASM=0 \ + -s ALLOW_MEMORY_GROWTH=1 + EMFLAGS_WASM = \ -s WASM=1 \ -s ALLOW_MEMORY_GROWTH=1 @@ -52,21 +59,29 @@ EMFLAGS_DEBUG = \ -O1 BITCODE_FILES = out/sqlite3.bc out/extension-functions.bc + OUTPUT_WRAPPER_FILES = src/shell-pre.js src/shell-post.js +OUTPUT_API_FILES = out/api.js + +EMFLAGS_PRE_JS_FILES = \ + --pre-js out/api.js + +EXPORTED_METHODS_JSON_FILES = src/exported_functions.json src/exported_runtime_methods.json + all: optimized debug worker .PHONY: debug debug: dist/sql-asm-debug.js dist/sql-wasm-debug.js -dist/sql-asm-debug.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) out/api.js src/exported_functions.json src/exported_runtime_methods.json - $(EMCC) $(EMFLAGS) $(EMFLAGS_DEBUG) -s WASM=0 $(BITCODE_FILES) --pre-js out/api.js -o $@ +dist/sql-asm-debug.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) $(OUTPUT_API_FILES) $(EXPORTED_METHODS_JSON_FILES) + $(EMCC) $(EMFLAGS) $(EMFLAGS_DEBUG) $(EMFLAGS_ASM) $(BITCODE_FILES) $(EMFLAGS_PRE_JS_FILES) -o $@ mv $@ out/tmp-raw.js cat src/shell-pre.js out/tmp-raw.js src/shell-post.js > $@ rm out/tmp-raw.js -dist/sql-wasm-debug.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) out/api.js src/exported_functions.json src/exported_runtime_methods.json - $(EMCC) $(EMFLAGS) $(EMFLAGS_DEBUG) $(EMFLAGS_WASM) $(BITCODE_FILES) --pre-js out/api.js -o $@ +dist/sql-wasm-debug.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) $(OUTPUT_API_FILES) $(EXPORTED_METHODS_JSON_FILES) + $(EMCC) $(EMFLAGS) $(EMFLAGS_DEBUG) $(EMFLAGS_WASM) $(BITCODE_FILES) $(EMFLAGS_PRE_JS_FILES) -o $@ mv $@ out/tmp-raw.js cat src/shell-pre.js out/tmp-raw.js src/shell-post.js > $@ rm out/tmp-raw.js @@ -74,20 +89,20 @@ dist/sql-wasm-debug.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) out/api.js src/ .PHONY: optimized optimized: dist/sql-asm.js dist/sql-wasm.js dist/sql-asm-memory-growth.js -dist/sql-asm.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) out/api.js src/exported_functions.json src/exported_runtime_methods.json - $(EMCC) $(EMFLAGS) $(EMFLAGS_OPTIMIZED) -s WASM=0 $(BITCODE_FILES) --pre-js out/api.js -o $@ +dist/sql-asm.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) $(OUTPUT_API_FILES) $(EXPORTED_METHODS_JSON_FILES) + $(EMCC) $(EMFLAGS) $(EMFLAGS_OPTIMIZED) $(EMFLAGS_ASM) $(BITCODE_FILES) $(EMFLAGS_PRE_JS_FILES) -o $@ mv $@ out/tmp-raw.js cat src/shell-pre.js out/tmp-raw.js src/shell-post.js > $@ rm out/tmp-raw.js -dist/sql-wasm.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) out/api.js src/exported_functions.json src/exported_runtime_methods.json - $(EMCC) $(EMFLAGS) $(EMFLAGS_OPTIMIZED) $(EMFLAGS_WASM) $(BITCODE_FILES) --pre-js out/api.js -o $@ +dist/sql-wasm.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) $(OUTPUT_API_FILES) $(EXPORTED_METHODS_JSON_FILES) + $(EMCC) $(EMFLAGS) $(EMFLAGS_OPTIMIZED) $(EMFLAGS_WASM) $(BITCODE_FILES) $(EMFLAGS_PRE_JS_FILES) -o $@ mv $@ out/tmp-raw.js cat src/shell-pre.js out/tmp-raw.js src/shell-post.js > $@ rm out/tmp-raw.js -dist/sql-asm-memory-growth.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) out/api.js src/exported_functions.json src/exported_runtime_methods.json - $(EMCC) $(EMFLAGS) $(EMFLAGS_OPTIMIZED) -s WASM=0 -s ALLOW_MEMORY_GROWTH=1 $(BITCODE_FILES) --pre-js out/api.js -o $@ +dist/sql-asm-memory-growth.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) $(OUTPUT_API_FILES) $(EXPORTED_METHODS_JSON_FILES) + $(EMCC) $(EMFLAGS) $(EMFLAGS_OPTIMIZED) $(EMFLAGS_ASM_MEMORY_GROWTH) $(BITCODE_FILES) $(EMFLAGS_PRE_JS_FILES) -o $@ mv $@ out/tmp-raw.js cat src/shell-pre.js out/tmp-raw.js src/shell-post.js > $@ rm out/tmp-raw.js @@ -116,14 +131,14 @@ dist/worker.sql-wasm-debug.js: dist/sql-wasm-debug.js out/worker.js # However, since we can't tell emcc that we don't need the wasm generated, and just want the wrapper, we have to pay to have the .wasm generated # even though we would have already generated it with our sql-wasm.js target above. # This would be made easier if this is implemented: https://github.com/emscripten-core/emscripten/issues/8506 -# dist/worker.sql-wasm.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) out/api.js out/worker.js src/exported_functions.json src/exported_runtime_methods.json dist/sql-wasm-debug.wasm +# dist/worker.sql-wasm.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) out/api.js out/worker.js $(EXPORTED_METHODS_JSON_FILES) dist/sql-wasm-debug.wasm # $(EMCC) $(EMFLAGS) $(EMFLAGS_OPTIMIZED) -s ENVIRONMENT=worker -s $(EMFLAGS_WASM) $(BITCODE_FILES) --pre-js out/api.js -o out/sql-wasm.js # mv out/sql-wasm.js out/tmp-raw.js # cat src/shell-pre.js out/tmp-raw.js src/shell-post.js out/worker.js > $@ # #mv out/sql-wasm.wasm dist/sql-wasm.wasm # rm out/tmp-raw.js -# dist/worker.sql-wasm-debug.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) out/api.js out/worker.js src/exported_functions.json src/exported_runtime_methods.json dist/sql-wasm-debug.wasm +# dist/worker.sql-wasm-debug.js: $(BITCODE_FILES) $(OUTPUT_WRAPPER_FILES) out/api.js out/worker.js $(EXPORTED_METHODS_JSON_FILES) dist/sql-wasm-debug.wasm # $(EMCC) -s ENVIRONMENT=worker $(EMFLAGS) $(EMFLAGS_DEBUG) -s ENVIRONMENT=worker -s WASM_BINARY_FILE=sql-wasm-foo.debug $(EMFLAGS_WASM) $(BITCODE_FILES) --pre-js out/api.js -o out/sql-wasm-debug.js # mv out/sql-wasm-debug.js out/tmp-raw.js # cat src/shell-pre.js out/tmp-raw.js src/shell-post.js out/worker.js > $@