33ec0b79b8
Inner functions must be eagerly parsed for scope analysis, but the full AST is also kept around even though it's not needed. This CL mitigates this problem by allocating some AstNodes of the inner function to a temporary Zone which is deallocated once the scope information has been built. The remaining nodes (such as VariableProxy) must persist until scope analysis actually happens, and have to be allocated to a parser-persistent Zone. BUG=417697 LOG=N Review URL: https://codereview.chromium.org/1304923004 Cr-Commit-Position: refs/heads/master@{#30685}
44 lines
1.7 KiB
JavaScript
44 lines
1.7 KiB
JavaScript
// Copyright 2015 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
// comments to trigger lazy compilation comments to trigger lazy compilation
|
|
|
|
// Test that IIFEs are compilable even under lazy conditions where the enclosing
|
|
// parentheses heuristic has not been triggered.
|
|
|
|
function f() {
|
|
return function(){ return 0; }();
|
|
}
|
|
|
|
function g() {
|
|
function h() {
|
|
return function(){ return 0; }();
|
|
}
|
|
return h();
|
|
}
|
|
|
|
f();
|
|
|
|
g();
|
|
|
|
0, function(){}();
|
|
|
|
(function(){ 0, function(){}(); })();
|
|
|
|
0, function(){ (function(){ 0, function(){}(); })(); }();
|