annotate test/compiler/7048332/Test7048332.java @ 10988:cd54c7e92908

8015660: Test8009761.java "Failed: init recursive calls: 24. After deopt 25" Summary: Windows reserves and only partially commits thread stack. For detecting more thread stack space for execution, Windows installs one-shot page as guard page just before the current commited edge. It will trigger STACK_OVERFLOW_EXCEPTION when lands on last 4 pages of thread stack space. StackYellowPages default value is 2 on Windows (plus 1 page of StackRedPages, 3 pages guarded by hotspot) so the exception happens one page before Yellow pages. Same route executed second time will have one more page brought in, this leads same execution with different stack depth(interpreter mode). We need match Windows settings so the stack overflow exception will not happen before Yellow pages. Reviewed-by: dholmes Contributed-by: andreas.schoesser@sap.com
author minqi
date Tue, 18 Jun 2013 09:08:35 -0700
parents c7c81f18c834
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3738
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
1 /*
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
4 *
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
7 * published by the Free Software Foundation.
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
8 *
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
13 * accompanied this code).
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
14 *
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
18 *
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
21 * questions.
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
22 *
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
23 */
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
24
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
25 /**
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
26 * @test
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
27 * @bug 7048332
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
28 * @summary Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
29 *
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
30 * @run main/othervm -Xbatch Test7048332
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
31 */
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
32
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
33
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
34 public class Test7048332 {
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
35
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
36 static int capacity = 2;
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
37 static int first = 1;
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
38 static int last = 2;
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
39
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
40 static int test(int i1, int i2, int i3, int i4, int i5, int i6) {
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
41 final int result;
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
42 if (last >= first) {
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
43 result = last - first;
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
44 } else {
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
45 result = last - first + capacity;
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
46 }
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
47 return result;
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
48 }
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
49
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
50 public static void main(String [] args) {
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
51 for (int i = 0; i < 11000; i++) {
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
52 last = (i & 1) << 1; // 0 or 2
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
53 int k = test(1, 2, 3, 4, 5, 6);
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
54 if (k != 1) {
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
55 System.out.println("FAILED: " + k + " != 1");
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
56 System.exit(97);
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
57 }
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
58 }
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
59 }
c7c81f18c834 7048332: Cadd_cmpLTMask doesn't handle 64-bit tmp register properly
kvn
parents:
diff changeset
60 }