13fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// Copyright 2011 the V8 project authors. All rights reserved. 23fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// Redistribution and use in source and binary forms, with or without 33fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// modification, are permitted provided that the following conditions are 43fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// met: 53fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// 63fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// * Redistributions of source code must retain the above copyright 73fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// notice, this list of conditions and the following disclaimer. 83fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// * Redistributions in binary form must reproduce the above 93fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// copyright notice, this list of conditions and the following 103fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// disclaimer in the documentation and/or other materials provided 113fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// with the distribution. 123fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// * Neither the name of Google Inc. nor the names of its 133fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// contributors may be used to endorse or promote products derived 143fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// from this software without specific prior written permission. 153fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// 163fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 173fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 183fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 193fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 203fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 213fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 223fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 233fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 243fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 253fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 263fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 273fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 283fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch(function() { 293fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch function f(x) { 303fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch var arguments = [ 1, 2, 3 ]; 313fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch return x; 323fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 333fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch assertEquals(7, f(7)); 343fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch})(); 353fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 363fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 373fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch(function() { 383fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch function f(x) { 393fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch arguments[0] = 991; 403fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch var arguments = [ 1, 2, 3 ]; 413fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch return x; 423fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 433fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch assertEquals(991, f(7)); 443fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch})(); 453fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 463fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 473fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch(function() { 483fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch function f(x) { 493fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch arguments[0] = 991; 503fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch for (var i = 0; i < 10; i++) { 513fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch if (i == 5) { 523fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch var arguments = [ 1, 2, 3 ]; 533fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 543fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 553fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch return x; 563fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 573fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch assertEquals(991, f(7)); 583fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch})(); 593fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 603fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 613fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch(function() { 623fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch function f(x, s) { 633fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch eval(s); 643fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch return x; 653fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 663fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch assertEquals(7, f(7, "var arguments = [ 1, 2, 3 ];")); 673fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch})(); 683fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 693fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 703fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch(function() { 713fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch function f(x, s) { 723fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch var tmp = arguments[0]; 733fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch eval(s); 743fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch return tmp; 753fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 763fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch assertEquals(7, f(7, "var arguments = [ 1, 2, 3 ];")); 773fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch})(); 783fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 793fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 803fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch(function() { 813fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch function f(x, s) { 823fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch var tmp = arguments[0]; 833fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch eval(s); 843fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch return tmp; 853fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 863fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch assertEquals(7, f(7, "")); 873fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch})(); 883fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 893fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 903fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch(function() { 913fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch function f(x, s) { 923fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch var tmp = arguments[0]; 933fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch eval(s); 943fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch return x; 953fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 963fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch assertEquals(7, f(7, "var arguments = [ 1, 2, 3 ];")); 973fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch})(); 983fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 993fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 1003fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch(function() { 1013fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch function f(x, s) { 1023fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch var tmp = arguments[0]; 1033fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch eval(s); 1043fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch return x; 1053fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 1063fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch assertEquals(7, f(7, "")); 1073fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch})(); 1083fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 1093fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 1103fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch(function() { 1113fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch function f(x) { 1123fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch function g(y) { 1133fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch x = y; 1143fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 1153fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch arguments = {}; 1163fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch g(991); 1173fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch return x; 1183fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 1193fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch assertEquals(991, f(7)); 1203fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch})(); 1213fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 1223fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch 1233fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch(function() { 1243fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch function f(x) { 1253fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch function g(y, s) { 1263fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch eval(s); 1273fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 1283fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch arguments = {}; 1293fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch g(991, "x = y;"); 1303fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch return x; 1313fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch } 1323fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch assertEquals(991, f(7)); 1333fb3ca8c7ca439d408449a395897395c0faae8d1Ben Murdoch})(); 134