174f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// Copyright 2010 the V8 project authors. All rights reserved.
274f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// Redistribution and use in source and binary forms, with or without
374f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// modification, are permitted provided that the following conditions are
474f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// met:
574f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org//
674f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org//     * Redistributions of source code must retain the above copyright
774f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org//       notice, this list of conditions and the following disclaimer.
874f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org//     * Redistributions in binary form must reproduce the above
974f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org//       copyright notice, this list of conditions and the following
1074f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org//       disclaimer in the documentation and/or other materials provided
1174f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org//       with the distribution.
1274f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org//     * Neither the name of Google Inc. nor the names of its
1374f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org//       contributors may be used to endorse or promote products derived
1474f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org//       from this software without specific prior written permission.
1574f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org//
1674f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1774f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1874f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1974f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2074f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2174f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2274f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2374f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2474f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2574f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2674f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2774f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org
2874f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org// Test accessors on the global object.
2974f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org
3074f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.orgvar x_ = 0;
3174f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org
3274f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org__defineSetter__('x', function(x) { x_ = x; });
3374f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org__defineGetter__('x', function() { return x_; });
3474f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org
3574f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org__defineSetter__('y', function(x) { });
3674f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org__defineGetter__('y', function() { return 7; });
3774f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org
3874f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.orgfunction f(a) {
3974f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org  x = x + a;
4074f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org  return x;
4174f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org}
4274f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org
4374f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.orgfunction g(a) {
4474f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org  y = y + a;
4574f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org  return y;
4674f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org}
4774f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org
4874f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.orgassertEquals(1, f(1));
4974f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.orgassertEquals(3, f(2));
5074f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.org
5174f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.orgassertEquals(7, g(1));
5274f333bce721daf6b1f9d7d3d3faa623f77658d7vegorov@chromium.orgassertEquals(7, g(2));
53