| // 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: --allow-natives-syntax --lazy-inner-functions |
| |
| // Test that the information on which variables to allocate in context doesn't |
| // change when recompiling. |
| |
| (function TestVarInInnerFunction() { |
| // Introduce variables which would potentially be context allocated, depending |
| // on whether an inner function refers to them or not. |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| var a; // This will make "a" actually not be context allocated. |
| a; b; c; |
| } |
| // Force recompilation. |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| |
| // Other tests are the same, except that the shadowing variable "a" in inner |
| // functions is declared differently. |
| |
| (function TestLetInInnerFunction() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| let a; |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestConstInInnerFunction() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| const a = 0; |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionParameter() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner(a) { |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionRestParameter() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner(...a) { |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionDestructuredParameter_1() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner([d, a]) { |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionDestructuredParameter_2() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner({d, a}) { |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerArrowFunctionParameter() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| (a) => { a; b; c; } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerArrowFunctionRestParameter() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| (...a) => { a; b; c; } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerArrowFunctionDestructuredParameter_1() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| ([d, a]) => { a; b; c; } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerArrowFunctionDestructuredParameter_2() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| ({d, a}) => { a; b; c; } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerInnerFunctionParameter() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| function innerinner(a) { a; b; c; } |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerInnerFunctionRestParameter() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| function innerinner(...a) { a; b; c; } |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerInnerFunctionDestructuredParameter_1() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| function innerinner({d, a}) { a; b; c; } |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerInnerFunctionDestructuredParameter_2() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| function innerinner([d, a]) { a; b; c; } |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerInnerArrowFunctionParameter() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| var f = a => a + b + c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerInnerArrowFunctionRestParameter() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| var f = (...a) => a + b + c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerInnerArrowFunctionDestructuredParameter_1() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| var f = ([d, a]) => a + b + c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerInnerArrowFunctionDestructuredParameter_2() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| var f = ({d, a}) => a + b + c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionInnerFunction() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| function a() { } |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionSloppyBlockFunction() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| if (true) { function a() { } } |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionCatchVariable() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| try { |
| } |
| catch(a) { |
| a; b; c; |
| } |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionLoopVariable1() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| for (var a in {}) { |
| a; b; c; |
| } |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionLoopVariable2() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| for (let a in {}) { |
| a; b; c; |
| } |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionLoopVariable3() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| for (var a of []) { |
| a; b; c; |
| } |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionLoopVariable4() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| for (let a of []) { |
| a; b; c; |
| } |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionClass() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| class a {} |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionDestructuring1() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| var [a, a2] = [1, 2]; |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionDestructuring2() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| let [a, a2] = [1, 2]; |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionDestructuring3() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| const [a, a2] = [1, 2]; |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionDestructuring4() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| var [a2, ...a] = [1, 2]; |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionDestructuring5() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| let [a2, ...a] = [1, 2]; |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionDestructuring6() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| const [a2, ...a] = [1, 2]; |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionDestructuring7() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| var {a, a2} = {a: 1, a2: 2}; |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionDestructuring8() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| let {a, a2} = {a: 1, a2: 2}; |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| (function TestInnerFunctionDestructuring9() { |
| var a = 1; |
| var b = 2; |
| var c = 3; |
| function inner() { |
| const {a, a2} = {a: 1, a2: 2}; |
| a; b; c; |
| } |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| assertEquals(1, a); |
| assertEquals(2, b); |
| assertEquals(3, c); |
| } |
| })(); |
| |
| // A cluster of similar tests where the inner function only declares a variable |
| // whose name clashes with an outer function variable name, but doesn't use it. |
| (function TestRegress650969_1_var() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| var a; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_1_let() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| let a; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_2_var() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| var a = 6; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_2_let() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| let a = 6; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_2_const() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| const a = 6; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_3_var() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| var a, b; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_3_let() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| let a, b; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_4_var() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| var a = 6, b; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_4_let() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| let a = 6, b; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_4_const() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| const a = 0, b = 0; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_9_parameter() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner(a) {} |
| } |
| })(); |
| |
| (function TestRegress650969_9_restParameter() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner(...a) {} |
| } |
| })(); |
| |
| (function TestRegress650969_9_destructuredParameter_1() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner([d, a]) {} |
| } |
| })(); |
| |
| (function TestRegress650969_9_destructuredParameter_2() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner({d, a}) {} |
| } |
| })(); |
| |
| (function TestRegress650969_10_parameter() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| function innerinner(a) {} |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_10_restParameter() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| function innerinner(...a) {} |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_10_destructuredParameter_1() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| function innerinner([d, a]) {} |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_10_destructuredParameter_2() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| function innerinner({d, a}) {} |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_11_var() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| var [a, b] = [1, 2]; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_11_let() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| let [a, b] = [1, 2]; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_11_const() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| const [a, b] = [1, 2]; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_12_var() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| var [b, a] = [1, 2]; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_12_let() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| let [b, a] = [1, 2]; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_12_const() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| const [b, a] = [1, 2]; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_13_var() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| var [b, ...a] = [1, 2]; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_13_let() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| let [b, ...a] = [1, 2]; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_13_const() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| const [b, ...a] = [1, 2]; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_14_var() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| var {a, b} = {a: 1, b: 2}; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_14_let() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| let {a, b} = {a: 1, b: 2}; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_14_const() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| const {a, b} = {a: 1, b: 2}; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_15_var() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| var {b: {a}, c} = {b: {a: 1}, c: 2}; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_15_let() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| let {b: {a}, c} = {b: {a: 1}, c: 2}; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_15_const() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| const {b: {a}, c} = {b: {a: 1}, c: 2}; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_16_var() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| var {a: {b}, c} = {a: {b: 1}, c: 2}; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_16_let() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| let {a: {b}, c} = {a: {b: 1}, c: 2}; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_16_const() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| const {a: {b}, c} = {a: {b: 1}, c: 2}; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_17_var() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| for (var a = 0; 0 == 1; ) { } |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_17_let() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| for (let a = 0; 0 == 1; ) { } |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_17_const() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| for (const a = 0; 0 == 1; ) { } |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_18() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| function innerinner([a, b]) {} |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_18() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a; |
| function inner() { |
| function innerinner(a) {} |
| } |
| } |
| })(); |
| |
| // Regression tests for an intermediate stage where unresolved references were |
| // discarded too aggressively. |
| (function TestRegress650969_sidetrack_var() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a = 0; |
| function inner() { |
| return a; |
| var {b: {a}, c} = {b: {a: 1}, c: 2}; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_sidetrack_let() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a = 0; |
| function inner() { |
| return a; |
| let {b: {a}, c} = {b: {a: 1}, c: 2}; |
| } |
| } |
| })(); |
| |
| (function TestRegress650969_sidetrack_const() { |
| for (var i = 0; i < 3; ++i) { |
| if (i == 1) { |
| %OptimizeOsr(); |
| } |
| var a = 0; |
| function inner() { |
| return a; |
| const {b: {a}, c} = {b: {a: 1}, c: 2}; |
| } |
| } |
| })(); |