13ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// Copyright 2011 the V8 project authors. All rights reserved. 23ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// Redistribution and use in source and binary forms, with or without 33ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// modification, are permitted provided that the following conditions are 43ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// met: 53ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// 63ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// * Redistributions of source code must retain the above copyright 73ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// notice, this list of conditions and the following disclaimer. 83ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// * Redistributions in binary form must reproduce the above 93ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// copyright notice, this list of conditions and the following 103ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// disclaimer in the documentation and/or other materials provided 113ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// with the distribution. 123ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// * Neither the name of Google Inc. nor the names of its 133ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// contributors may be used to endorse or promote products derived 143ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// from this software without specific prior written permission. 153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// 163ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 173ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 193ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 203ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 213ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 223ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 233ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 243ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 253ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 263ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 273ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 283ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// Flags: --expose-debug-as debug --expose-natives-as=builtins 293ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 303ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// Check that the ScopeIterator can properly recreate the scope at 313ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// every point when stepping through functions. 323ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 333ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochvar Debug = debug.Debug; 343ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 353ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction listener(event, exec_state, event_data, data) { 363ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if (event == Debug.DebugEvent.Break) { 373ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch // Access scope details. 383ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch var scope_count = exec_state.frame().scopeCount(); 393ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for (var i = 0; i < scope_count; i++) { 403ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch var scope = exec_state.frame().scope(i); 413ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch // assertTrue(scope.isScope()); 423ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch scope.scopeType(); 433ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch scope.scopeObject(); 443ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 453ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 463ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch // Do steps until we reach the global scope again. 473ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if (true) { 483ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch exec_state.prepareStep(Debug.StepAction.StepInMin, 1); 493ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 503ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 513ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 523ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 533ef787dbeca8a5fb1086949cda830dccee07bfbdBen MurdochDebug.setListener(listener); 543ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 553ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 563ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction test1() { 573ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch debugger; 583ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x:1}) { 593ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch x = 2; 603ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 613ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 623ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest1(); 633ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 643ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 653ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction test2() { 663ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if (true) { 673ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({}) { 683ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch debugger; 693ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 703ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } else { 713ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({}) { 723ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return 10; 733ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 743ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 753ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 763ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest2(); 773ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 783ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 793ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction test3() { 803ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if (true) { 813ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch debugger; 823ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } else { 833ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({}) { 843ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return 10; 853ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 863ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 873ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 883ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest3(); 893ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 903ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 913ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction test4() { 923ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch debugger; 933ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x:1}) x = 1 943ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 953ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest4(); 963ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 973ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 983ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction test5() { 993ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch debugger; 1003ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch var dummy = 1; 1013ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({}) { 1023ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({}) { 1033ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch dummy = 2; 1043ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 1053ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 1063ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch dummy = 3; 1073ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 1083ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest5(); 1093ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1103ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1113ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction test6() { 1123ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch debugger; 1133ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch try { 1143ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch throw 'stuff'; 1153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } catch (e) { 1163ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch e = 1; 1173ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 1183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 1193ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest6(); 1203ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1213ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1223ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction test7() { 1233ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch debugger; 1243ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch function foo() {} 1253ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 1263ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest7(); 1273ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1283ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1293ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction test8() { 1303ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch debugger; 1313ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch (function foo() {})(); 1323ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 1333ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest8(); 1343ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1353ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1363ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochvar q = 42; 1373ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochvar prefixes = [ "debugger; ", 1383ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "if (false) { try { throw 0; } catch(x) { return x; } }; debugger; " ]; 1393ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochvar bodies = [ "1", 1403ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "1 ", 1413ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "1;", 1423ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "1; ", 1433ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "q", 1443ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "q ", 1453ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "q;", 1463ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "q; ", 1473ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "try { throw 'stuff' } catch (e) { e = 1; }", 1483ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "try { throw 'stuff' } catch (e) { e = 1; } ", 1493ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "try { throw 'stuff' } catch (e) { e = 1; };", 1503ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "try { throw 'stuff' } catch (e) { e = 1; }; " ]; 1513ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochvar with_bodies = [ "with ({}) {}", 1523ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "with ({x:1}) x", 1533ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "with ({x:1}) x = 1", 1543ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "with ({x:1}) x ", 1553ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "with ({x:1}) x = 1 ", 1563ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "with ({x:1}) x;", 1573ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "with ({x:1}) x = 1;", 1583ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "with ({x:1}) x; ", 1593ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch "with ({x:1}) x = 1; " ]; 1603ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1613ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1623ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction test9() { 1633ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch debugger; 1643ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for (var i = 0; i < prefixes.length; ++i) { 1653ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch var pre = prefixes[i]; 1663ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for (var j = 0; j < bodies.length; ++j) { 1673ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch var body = bodies[j]; 1683ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch eval(pre + body); 1693ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch eval("'use strict'; " + pre + body); 1703ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 1713ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for (var j = 0; j < with_bodies.length; ++j) { 1723ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch var body = with_bodies[j]; 1733ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch eval(pre + body); 1743ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 1753ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 1763ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 1773ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest9(); 1783ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1793ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1803ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction test10() { 1813ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch debugger; 1823ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({}) { 1833ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return 10; 1843ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 1853ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 1863ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest10(); 1873ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1883ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1893ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction test11() { 1903ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch debugger; 1913ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch try { 1923ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch throw 'stuff'; 1933ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } catch (e) { 1943ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return 10; 1953ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 1963ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 1973ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtest11(); 1983ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1993ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2003ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// Test global eval and function constructor. 2013ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfor (var i = 0; i < prefixes.length; ++i) { 2023ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch var pre = prefixes[i]; 2033ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for (var j = 0; j < bodies.length; ++j) { 2043ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch var body = bodies[j]; 2053ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch eval(pre + body); 2063ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch eval("'use strict'; " + pre + body); 2073ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Function(pre + body)(); 2083ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2093ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for (var j = 0; j < with_bodies.length; ++j) { 2103ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch var body = with_bodies[j]; 2113ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch eval(pre + body); 2123ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Function(pre + body)(); 2133ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2143ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 2153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2163ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2173ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtry { 2183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with({}) { 2193ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch debugger; 2203ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch eval("{}$%:^"); 2213ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2223ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} catch(e) { 2233ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch nop(); 2243ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 2253ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2263ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// Return from function constructed with Function constructor. 2273ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochvar anon = 12; 2283ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfor (var i = 0; i < prefixes.length; ++i) { 2293ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch var pre = prefixes[i]; 2303ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Function(pre + "return 42")(); 2313ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Function(pre + "return 42 ")(); 2323ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Function(pre + "return 42;")(); 2333ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Function(pre + "return 42; ")(); 2343ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Function(pre + "return anon")(); 2353ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Function(pre + "return anon ")(); 2363ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Function(pre + "return anon;")(); 2373ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch Function(pre + "return anon; ")(); 2383ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 2393ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2403ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2413ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction nop() {} 2423ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2433ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2443ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfunction stress() { 2453ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch debugger; 2463ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2473ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch L: with ({x:12}) { 2483ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch break L; 2493ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2503ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2513ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2523ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'outer'}) { 2533ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch label: { 2543ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner'}) { 2553ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch break label; 2563ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2573ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2583ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2593ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2603ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2613ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'outer'}) { 2623ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch label: { 2633ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner'}) { 2643ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch break label; 2653ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2663ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2673ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch nop(); 2683ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2693ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2703ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2713ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'outer'}) { 2723ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch label: { 2733ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'middle'}) { 2743ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner'}) { 2753ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch break label; 2763ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2773ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2783ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2793ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2803ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2813ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2823ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'outer'}) { 2833ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch label: { 2843ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'middle'}) { 2853ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner'}) { 2863ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch break label; 2873ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2883ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2893ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2903ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch nop(); 2913ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2923ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2933ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2943ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'outer'}) { 2953ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for (var i = 0; i < 3; ++i) { 2963ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner' + i}) { 2973ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch continue; 2983ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 2993ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3003ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3013ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3023ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3033ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'outer'}) { 3043ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch label: for (var i = 0; i < 3; ++i) { 3053ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'middle' + i}) { 3063ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for (var j = 0; j < 3; ++j) { 3073ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner' + j}) { 3083ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch continue label; 3093ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3103ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3113ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3123ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3133ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3143ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3163ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'outer'}) { 3173ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch try { 3183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner'}) { 3193ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch throw 0; 3203ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3213ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } catch (e) { 3223ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3233ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3243ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3253ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3263ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'outer'}) { 3273ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch try { 3283ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner'}) { 3293ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch throw 0; 3303ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3313ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } catch (e) { 3323ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch nop(); 3333ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3343ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3353ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3363ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3373ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'outer'}) { 3383ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch try { 3393ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'middle'}) { 3403ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner'}) { 3413ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch throw 0; 3423ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3433ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3443ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } catch (e) { 3453ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3463ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3473ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3483ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3493ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch try { 3503ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'outer'}) { 3513ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch try { 3523ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner'}) { 3533ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch throw 0; 3543ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3553ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } finally { 3563ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3573ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3583ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } catch (e) { 3593ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3603ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3613ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3623ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch try { 3633ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'outer'}) { 3643ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch try { 3653ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner'}) { 3663ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch throw 0; 3673ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3683ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } finally { 3693ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch nop(); 3703ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3713ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3723ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } catch (e) { 3733ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3743ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3753ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3763ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch function stress1() { 3773ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x:12}) { 3783ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return x; 3793ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3803ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3813ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch stress1(); 3823ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3833ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3843ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch function stress2() { 3853ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'outer'}) { 3863ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner'}) { 3873ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return x; 3883ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3893ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3903ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3913ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch stress2(); 3923ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 3933ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch function stress3() { 3943ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch try { 3953ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner'}) { 3963ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch throw 0; 3973ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 3983ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } catch (e) { 3993ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return e; 4003ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 4013ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 4023ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch stress3(); 4033ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 4043ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 4053ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch function stress4() { 4063ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch try { 4073ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner'}) { 4083ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch throw 0; 4093ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 4103ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } catch (e) { 4113ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch with ({x: 'inner'}) { 4123ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch return e; 4133ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 4143ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 4153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch } 4163ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch stress4(); 4173ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 4183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 4193ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochstress(); 4203ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 4213ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 4223ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch// With block as the last(!) statement in global code. 4233ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochwith ({}) { debugger; }