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