Index: src/runtime/runtime-compiler.cc |
diff --git a/src/runtime/runtime-compiler.cc b/src/runtime/runtime-compiler.cc |
index 862fefcd5045ad3fbc7a5dcd85c2b032be34387a..d75ecdd3c1c26ff80dbc3b6ae7854586a1b8b25b 100644 |
--- a/src/runtime/runtime-compiler.cc |
+++ b/src/runtime/runtime-compiler.cc |
@@ -101,8 +101,18 @@ RUNTIME_FUNCTION(Runtime_InstantiateAsmJs) { |
return *result.ToHandleChecked(); |
} |
} |
- // Remove wasm data and return a smi 0 to indicate failure. |
+ // Remove wasm data, mark as broken for asm->wasm, |
+ // replace code with CompileLazy, and return a smi 0 to indicate failure. |
function->shared()->ClearAsmWasmData(); |
+ function->shared()->set_is_asm_wasm_broken(true); |
+ DCHECK(function->code() == |
+ isolate->builtins()->builtin(Builtins::kInstantiateAsmJs)); |
+ function->ReplaceCode(isolate->builtins()->builtin(Builtins::kCompileLazy)); |
+ if (function->shared()->code() == |
+ isolate->builtins()->builtin(Builtins::kInstantiateAsmJs)) { |
+ function->shared()->ReplaceCode( |
+ isolate->builtins()->builtin(Builtins::kCompileLazy)); |
+ } |
return Smi::FromInt(0); |
} |