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