1b5ccb055a
This makes the context allocation less pessimistic in the following cases: function outer() { var a; // Won't be context allocated function inner1() { var a; a; } function inner2(a) { a; } function inner3([a]) { a; } function inner4({ a: b}) { a; } } BUG=v8:5501 Review-Url: https://codereview.chromium.org/2407163003 Cr-Commit-Position: refs/heads/master@{#41521}
30 lines
812 B
JavaScript
30 lines
812 B
JavaScript
// Copyright 2016 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.
|
|
|
|
// Flags: --lazy-inner-functions
|
|
|
|
(function TestLazyInnerFunctionCallsEval() {
|
|
var i = (function eager_outer() {
|
|
var outer_var = 41; // Should be context-allocated
|
|
function lazy_inner() {
|
|
return eval("outer_var");
|
|
}
|
|
return lazy_inner;
|
|
})();
|
|
assertEquals(41, i());
|
|
})();
|
|
|
|
(function TestLazyInnerFunctionDestructuring() {
|
|
var i = (function eager_outer() {
|
|
var outer_var = 41; // Should be context-allocated
|
|
function lazy_inner() {
|
|
// This introduces b and refers to outer_var.
|
|
var {outer_var : b} = {outer_var};
|
|
return b;
|
|
}
|
|
return lazy_inner;
|
|
})();
|
|
assertEquals(41, i());
|
|
})();
|