jdk
1/*
2* Copyright (c) 2016, Red Hat, Inc. All rights reserved.
3* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*
5* This code is free software; you can redistribute it and/or modify it
6* under the terms of the GNU General Public License version 2 only, as
7* published by the Free Software Foundation.
8*
9* This code is distributed in the hope that it will be useful, but WITHOUT
10* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12* version 2 for more details (a copy is included in the LICENSE file that
13* accompanied this code).
14*
15* You should have received a copy of the GNU General Public License version
16* 2 along with this work; if not, write to the Free Software Foundation,
17* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18*
19* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20* or visit www.oracle.com if you need additional information or have any
21* questions.
22*/
23
24/**
25* @test
26* @bug 8166836
27* @summary Elimination of clone's ArrayCopyNode may make compilation fail silently
28* @run main/othervm -XX:-BackgroundCompilation -XX:-UseOnStackReplacement -XX:CompileCommand=dontinline,TestEliminatedCloneBadMemEdge::not_inlined TestEliminatedCloneBadMemEdge
29*
30*/
31
32public class TestEliminatedCloneBadMemEdge implements Cloneable {33
34int f1;35int f2;36int f3;37int f4;38int f5;39int f6;40int f7;41int f8;42int f9;43
44static void not_inlined() {}45
46static void test(TestEliminatedCloneBadMemEdge o1) throws CloneNotSupportedException {47TestEliminatedCloneBadMemEdge o2 = (TestEliminatedCloneBadMemEdge)o1.clone();48not_inlined();49o2.f1 = 0x42;50}51
52static public void main(String[] args) throws CloneNotSupportedException {53TestEliminatedCloneBadMemEdge o1 = new TestEliminatedCloneBadMemEdge();54for (int i = 0; i < 20000; i++) {55test(o1);56}57}58}
59