/*
 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/**
 * JDK-8079269: Optimistic rewrite in object literal causes ArrayIndexOutOfBoundsException
 *
 * @test
 * @run
 */

// m must be in scope so it's accessed with optimistic getters on scope
var m = 1; 

(function() {
    return { 
        p0: m, 
        p1: m = "foo",
        p2: m
    }
})();

var n = 1; 

// Test the spill object creator too
(function() {
    return { 
        p0: n, 
        p1: n = "foo",
        p2: n,
        p3: n,
        p4: n,
        p5: n,
        p6: n,
        p7: n,
        p8: n,
        p9: n,
        p10: n,
        p11: n,
        p12: n,
        p13: n,
        p14: n,
        p15: n,
        p16: n,
        p17: n,
        p18: n,
        p19: n,
        p20: n,
        p21: n,
        p22: n,
        p23: n,
        p24: n,
        p25: n,
        p26: n,
        p27: n,
        p28: n,
        p29: n,
        p30: n,
        p31: n,
        p32: n,
        p33: n,
        p34: n,
        p35: n,
        p36: n,
        p37: n,
        p38: n,
        p39: n,
        p40: n,
        p41: n,
        p42: n,
        p43: n,
        p44: n,
        p45: n,
        p46: n,
        p47: n,
        p48: n,
        p49: n,
        p50: n,
        p51: n,
        p52: n,
        p53: n,
        p54: n,
        p55: n,
        p56: n,
        p57: n,
        p58: n,
        p59: n,
        p60: n,
        p61: n,
        p62: n,
        p63: n,
        p64: n,
        p65: n,
        p66: n,
        p67: n,
        p68: n,
        p69: n,
        p70: n,
        p71: n,
        p72: n,
        p73: n,
        p74: n,
        p75: n,
        p76: n,
        p77: n,
        p78: n,
        p79: n,
        p80: n,
        p81: n,
        p82: n,
        p83: n,
        p84: n,
        p85: n,
        p86: n,
        p87: n,
        p88: n,
        p89: n,
        p90: n,
        p91: n,
        p92: n,
        p93: n,
        p94: n,
        p95: n,
        p96: n,
        p97: n,
        p98: n,
        p99: n,
        p100: n,
        p101: n,
        p102: n,
        p103: n,
        p104: n,
        p105: n,
        p106: n,
        p107: n,
        p108: n,
        p109: n,
        p110: n,
        p111: n,
        p112: n,
        p113: n,
        p114: n,
        p115: n,
        p116: n,
        p117: n,
        p118: n,
        p119: n,
        p120: n,
        p121: n,
        p122: n,
        p123: n,
        p124: n,
        p125: n,
        p126: n,
        p127: n,
        p128: n,
        p129: n,
        p130: n,
        p131: n,
        p132: n,
        p133: n,
        p134: n,
        p135: n,
        p136: n,
        p137: n,
        p138: n,
        p139: n,
        p140: n,
        p141: n,
        p142: n,
        p143: n,
        p144: n,
        p145: n,
        p146: n,
        p147: n,
        p148: n,
        p149: n,
        p150: n,
        p151: n,
        p152: n,
        p153: n,
        p154: n,
        p155: n,
        p156: n,
        p157: n,
        p158: n,
        p159: n,
        p160: n,
        p161: n,
        p162: n,
        p163: n,
        p164: n,
        p165: n,
        p166: n,
        p167: n,
        p168: n,
        p169: n,
        p170: n,
        p171: n,
        p172: n,
        p173: n,
        p174: n,
        p175: n,
        p176: n,
        p177: n,
        p178: n,
        p179: n,
        p180: n,
        p181: n,
        p182: n,
        p183: n,
        p184: n,
        p185: n,
        p186: n,
        p187: n,
        p188: n,
        p189: n,
        p190: n,
        p191: n,
        p192: n,
        p193: n,
        p194: n,
        p195: n,
        p196: n,
        p197: n,
        p198: n,
        p199: n,
        p200: n,
        p201: n,
        p202: n,
        p203: n,
        p204: n,
        p205: n,
        p206: n,
        p207: n,
        p208: n,
        p209: n,
        p210: n,
        p211: n,
        p212: n,
        p213: n,
        p214: n,
        p215: n,
        p216: n,
        p217: n,
        p218: n,
        p219: n,
        p220: n,
        p221: n,
        p222: n,
        p223: n,
        p224: n,
        p225: n,
        p226: n,
        p227: n,
        p228: n,
        p229: n,
        p230: n,
        p231: n,
        p232: n,
        p233: n,
        p234: n,
        p235: n,
        p236: n,
        p237: n,
        p238: n,
        p239: n,
        p240: n,
        p241: n,
        p242: n,
        p243: n,
        p244: n,
        p245: n,
        p246: n,
        p247: n,
        p248: n,
        p249: n,
        p250: n,
        p251: n,
        p252: n,
        p253: n,
        p254: n,
        p255: n,
        p256: n,
        p257: n,
        p258: n,
        p259: n
    }
})();

// No output; as long as it completes without
// ArrayIndexOutOfBoundsException in the OSR continuation handler, it's
// a success.
