blob: 124ae95085e742da6c3cafbb14e1293cc85701c3 [file] [log] [blame]
/*
* 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.