| Index: src/compiler.cc | 
| diff --git a/src/compiler.cc b/src/compiler.cc | 
| index da440f019c18dd190e8eaa8afe5e13384a0c5aaa..a45d7aacc9679079ac36e6efcd14557f63600057 100644 | 
| --- a/src/compiler.cc | 
| +++ b/src/compiler.cc | 
| @@ -1366,22 +1366,11 @@ bool CodeGenerationFromStringsAllowed(Isolate* isolate, | 
| } | 
| } | 
|  | 
| -bool ContainsAsmModule(const Scope* scope, Zone* zone) { | 
| -  DCHECK_NOT_NULL(scope); | 
| -  DCHECK_NOT_NULL(zone); | 
| -  ZoneQueue<const Scope*> worklist(zone); | 
| -  // We assume scopes form a tree, so no need to check for cycles | 
| -  worklist.push(scope); | 
| -  while (!worklist.empty()) { | 
| -    const Scope* s = worklist.front(); | 
| -    worklist.pop(); | 
| -    if (s->IsAsmModule()) { | 
| -      return true; | 
| -    } | 
| -    for (const Scope* child = s->inner_scope(); child != nullptr; | 
| -         child = child->sibling()) { | 
| -      worklist.push(child); | 
| -    } | 
| +bool ContainsAsmModule(Handle<Script> script) { | 
| +  DisallowHeapAllocation no_gc; | 
| +  SharedFunctionInfo::ScriptIterator iter(script); | 
| +  while (SharedFunctionInfo* info = iter.Next()) { | 
| +    if (info->HasAsmWasmData()) return true; | 
| } | 
| return false; | 
| } | 
| @@ -1528,7 +1517,7 @@ Handle<SharedFunctionInfo> Compiler::GetSharedFunctionInfoForScript( | 
| compilation_cache->PutScript(source, context, language_mode, result); | 
| if (FLAG_serialize_toplevel && | 
| compile_options == ScriptCompiler::kProduceCodeCache && | 
| -          !ContainsAsmModule(info.scope(), &zone)) { | 
| +          !ContainsAsmModule(script)) { | 
| HistogramTimerScope histogram_timer( | 
| isolate->counters()->compile_serialize()); | 
| RuntimeCallTimerScope runtimeTimer(isolate, | 
|  |