Index: src/ast/scopes.cc |
diff --git a/src/ast/scopes.cc b/src/ast/scopes.cc |
index 4ce1c0d85f7970f0b1cd5807d0519aac825d88c3..6b2fb96d3a7fb65f3f7054f8534968aa52ed9280 100644 |
--- a/src/ast/scopes.cc |
+++ b/src/ast/scopes.cc |
@@ -542,13 +542,15 @@ void DeclarationScope::Analyze(ParseInfo* info, AnalyzeMode mode) { |
scope->HoistSloppyBlockFunctions(&factory); |
} |
- // We are compiling one of three cases: |
+ // We are compiling one of four cases: |
// 1) top-level code, |
// 2) a function/eval/module on the top-level |
// 3) a function/eval in a scope that was already resolved. |
+ // 4) an asm.js function |
DCHECK(scope->scope_type() == SCRIPT_SCOPE || |
scope->outer_scope()->scope_type() == SCRIPT_SCOPE || |
- scope->outer_scope()->already_resolved_); |
+ scope->outer_scope()->already_resolved_ || |
+ (info->asm_function_scope() && scope->scope_type() == FUNCTION_SCOPE)); |
// The outer scope is never lazy. |
scope->set_should_eager_compile(); |
@@ -1006,7 +1008,7 @@ VariableProxy* Scope::NewUnresolved(AstNodeFactory* factory, |
// the same name because they may be removed selectively via |
// RemoveUnresolved(). |
DCHECK(!already_resolved_); |
- DCHECK_EQ(factory->zone(), zone()); |
+ DCHECK(factory->zone() == zone() || outer_scope()->IsAsmFunction()); |
marja
2016/11/29 07:39:46
I think this DCHECK should be left as is and you s
bradn
2016/11/29 09:54:09
Done.
|
VariableProxy* proxy = factory->NewVariableProxy(name, kind, start_position); |
proxy->set_next_unresolved(unresolved_); |
unresolved_ = proxy; |