15b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.org// Copyright 2014 the V8 project authors. All rights reserved. 25b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be 35b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.org// found in the LICENSE file. 45b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.org 55b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.orgfunction produce_object() { 65b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.org var real_length = 1; 75b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.org function set_length() { real_length = "boom"; } 85b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.org function get_length() { return real_length; } 95b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.org var o = { __proto__:Array.prototype , 0:"x" }; 105b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.org Object.defineProperty(o, "length", { set:set_length, get:get_length }) 115b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.org return o; 125b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.org} 135b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.org 145b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.orgassertEquals(2, produce_object().push("y")); 155b080567cf135f6dbaf23973ba6b6fa1d6af83b3machenbach@chromium.orgassertEquals(2, produce_object().unshift("y")); 16