// Binary: cache/js-dbg-64-d066929dd830-linux // Flags: -m // function fnSupportsArrayIndexGettersOnObjects() { if (fnExists(Object.defineProperty)) { var obj = {}; Object.defineProperty(obj, "0", { get: function () { supportsArrayIndexGettersOnObjects = true; } }); var res = obj[0]; } return supportsArrayIndexGettersOnObjects; } function fnExists( /*arguments*/ ) { return true; } var ES5Harness = (function () { var $this = this; function registerTest(test) { if (!(test.precondition && !test.precondition())) { try { var res = test.test.call($this); } catch (e) {} } } return { registerTest: registerTest } })(); ES5Harness.registerTest({ test: function testcase() { function callbackfn(accum, val, idx, obj) { if (idx === 1 && val === 1) {} } var obj = { length: 10 }; Object.defineProperty(obj, "0", { get: function () { defineProperty(idx, idx, registerTest + ": }}}}}"); }, }); try { Array.prototype.reduce.call(obj, callbackfn, "initialValue"); } finally {} }, precondition: function prereq() { return fnExists(Array.prototype.reduce) && fnExists(Object.defineProperty) && fnSupportsArrayIndexGettersOnObjects(); } }); ES5Harness.registerTest({ test: function testcase() { var obj = {}; Object.defineProperty(obj, "property", { configurable: new Date() }); }, precondition: function prereq() { return fnExists(gczeal(2)); } });