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