diff --git a/html/worker.js b/html/worker.js index c1b291e..eff16a3 100644 --- a/html/worker.js +++ b/html/worker.js @@ -84,7 +84,7 @@ function resumeCount() { for (;; stageNum++) { let isDone = wasm['count_one_stage_' + numbers](state, opts); - if (unwindingStack) { + if (wasmRaw.asyncify_get_state() !== 0) { // This stage caused a stack unwind in get_user_input so ignore the result // We will resume execution when a userInput message is received return; @@ -102,7 +102,6 @@ function resumeCount() { postMessage({'type': 'finalResultSummary', 'summary': wasm['final_result_summary_' + numbers](state, opts)}); } -var unwindingStack = false; var userInputBuffer = null; function get_user_input(message) { @@ -111,13 +110,11 @@ function get_user_input(message) { // Record the current state of the stack wasmRaw.asyncify_start_unwind(DATA_ADDR); - unwindingStack = true; // No further WebAssembly will be executed and control will return to resumeCount return null; } else { // We have reached the point the stack was originally unwound, so resume normal execution - unwindingStack = false; wasmRaw.asyncify_stop_rewind(); // Return the correct result to WebAssembly