annotate src/cpu/x86/vm/globals_x86.hpp @ 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 12f651e29f6b
children b800986664f4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
10988
cd54c7e92908 8015660: Test8009761.java "Failed: init recursive calls: 24. After deopt 25"
minqi
parents: 10287
diff changeset
2 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1365
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1365
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1365
diff changeset
21 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1868
diff changeset
25 #ifndef CPU_X86_VM_GLOBALS_X86_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1868
diff changeset
26 #define CPU_X86_VM_GLOBALS_X86_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1868
diff changeset
27
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1868
diff changeset
28 #include "utilities/globalDefinitions.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1868
diff changeset
29 #include "utilities/macros.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1868
diff changeset
30
0
a61af66fc99e Initial load
duke
parents:
diff changeset
31 // Sets the default values for platform dependent flags used by the runtime system.
a61af66fc99e Initial load
duke
parents:
diff changeset
32 // (see globals.hpp)
a61af66fc99e Initial load
duke
parents:
diff changeset
33
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 844
diff changeset
34 define_pd_global(bool, ConvertSleepToYield, true);
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 844
diff changeset
35 define_pd_global(bool, ShareVtableStubs, true);
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 844
diff changeset
36 define_pd_global(bool, CountInterpCalls, true);
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 844
diff changeset
37 define_pd_global(bool, NeedsDeoptSuspend, false); // only register window machines need this
0
a61af66fc99e Initial load
duke
parents:
diff changeset
38
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 844
diff changeset
39 define_pd_global(bool, ImplicitNullChecks, true); // Generate code for implicit null checks
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 844
diff changeset
40 define_pd_global(bool, UncommonNullCast, true); // Uncommon-trap NULLs past to check cast
0
a61af66fc99e Initial load
duke
parents:
diff changeset
41
a61af66fc99e Initial load
duke
parents:
diff changeset
42 // See 4827828 for this change. There is no globals_core_i486.hpp. I can't
a61af66fc99e Initial load
duke
parents:
diff changeset
43 // assign a different value for C2 without touching a number of files. Use
a61af66fc99e Initial load
duke
parents:
diff changeset
44 // #ifdef to minimize the change as it's late in Mantis. -- FIXME.
a61af66fc99e Initial load
duke
parents:
diff changeset
45 // c1 doesn't have this problem because the fix to 4858033 assures us
a61af66fc99e Initial load
duke
parents:
diff changeset
46 // the the vep is aligned at CodeEntryAlignment whereas c2 only aligns
a61af66fc99e Initial load
duke
parents:
diff changeset
47 // the uep and the vep doesn't get real alignment but just slops on by
a61af66fc99e Initial load
duke
parents:
diff changeset
48 // only assured that the entry instruction meets the 5 byte size requirement.
a61af66fc99e Initial load
duke
parents:
diff changeset
49 #ifdef COMPILER2
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 844
diff changeset
50 define_pd_global(intx, CodeEntryAlignment, 32);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
51 #else
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 844
diff changeset
52 define_pd_global(intx, CodeEntryAlignment, 16);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
53 #endif // COMPILER2
1365
6476042f815c 6940701: Don't align loops in stubs for Niagara sparc
kvn
parents: 1064
diff changeset
54 define_pd_global(intx, OptoLoopAlignment, 16);
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 844
diff changeset
55 define_pd_global(intx, InlineFrequencyCount, 100);
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 844
diff changeset
56 define_pd_global(intx, InlineSmallCode, 1000);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
57
10988
cd54c7e92908 8015660: Test8009761.java "Failed: init recursive calls: 24. After deopt 25"
minqi
parents: 10287
diff changeset
58 define_pd_global(intx, StackYellowPages, NOT_WINDOWS(2) WINDOWS_ONLY(3));
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 844
diff changeset
59 define_pd_global(intx, StackRedPages, 1);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
60 #ifdef AMD64
a61af66fc99e Initial load
duke
parents:
diff changeset
61 // Very large C++ stack frames using solaris-amd64 optimized builds
a61af66fc99e Initial load
duke
parents:
diff changeset
62 // due to lack of optimization caused by C++ compiler bugs
4921
849412a95e45 7059899: Stack overflows in Java code cause 64-bit JVMs to exit due to SIGSEGV
coleenp
parents: 3960
diff changeset
63 define_pd_global(intx, StackShadowPages, NOT_WIN64(20) WIN64_ONLY(6) DEBUG_ONLY(+2));
0
a61af66fc99e Initial load
duke
parents:
diff changeset
64 #else
4942
8f4eb44b3b76 7143061: nsk/stress/stack/b4525850 crash VM
never
parents: 3960
diff changeset
65 define_pd_global(intx, StackShadowPages, 4 DEBUG_ONLY(+5));
0
a61af66fc99e Initial load
duke
parents:
diff changeset
66 #endif // AMD64
a61af66fc99e Initial load
duke
parents:
diff changeset
67
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 844
diff changeset
68 define_pd_global(intx, PreInflateSpin, 10);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
69
a61af66fc99e Initial load
duke
parents:
diff changeset
70 define_pd_global(bool, RewriteBytecodes, true);
a61af66fc99e Initial load
duke
parents:
diff changeset
71 define_pd_global(bool, RewriteFrequentPairs, true);
1868
3dc12ef8735e 6989297: Integrate additional portability improvements
bobv
parents: 1552
diff changeset
72
3960
f08d439fab8c 7089790: integrate bsd-port changes
never
parents: 2368
diff changeset
73 #ifdef _ALLBSD_SOURCE
f08d439fab8c 7089790: integrate bsd-port changes
never
parents: 2368
diff changeset
74 define_pd_global(bool, UseMembar, true);
f08d439fab8c 7089790: integrate bsd-port changes
never
parents: 2368
diff changeset
75 #else
1868
3dc12ef8735e 6989297: Integrate additional portability improvements
bobv
parents: 1552
diff changeset
76 define_pd_global(bool, UseMembar, false);
3960
f08d439fab8c 7089790: integrate bsd-port changes
never
parents: 2368
diff changeset
77 #endif
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1868
diff changeset
78
2368
dde920245681 6896099: Integrate CMS heap ergo with default heap sizing ergo
ysr
parents: 2150
diff changeset
79 // GC Ergo Flags
10287
12f651e29f6b 6843347: Boundary values in some public GC options cause crashes
tschatzl
parents: 7474
diff changeset
80 define_pd_global(uintx, CMSYoungGenPerWorker, 64*M); // default max size of CMS young gen, per GC worker thread
6633
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
81
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
82 #define ARCH_FLAGS(develop, product, diagnostic, experimental, notproduct) \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
83 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
84 develop(bool, IEEEPrecision, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
85 "Enables IEEE precision (for INTEL only)") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
86 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
87 product(intx, FenceInstruction, 0, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
88 "(Unsafe,Unstable) Experimental") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
89 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
90 product(intx, ReadPrefetchInstr, 0, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
91 "Prefetch instruction to prefetch ahead") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
92 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
93 product(bool, UseStoreImmI16, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
94 "Use store immediate 16-bits value instruction on x86") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
95 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
96 product(intx, UseAVX, 99, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
97 "Highest supported AVX instructions set on x86/x64") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
98 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
99 diagnostic(bool, UseIncDec, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
100 "Use INC, DEC instructions on x86") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
101 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
102 product(bool, UseNewLongLShift, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
103 "Use optimized bitwise shift left") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
104 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
105 product(bool, UseAddressNop, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
106 "Use '0F 1F [addr]' NOP instructions on x86 cpus") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
107 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
108 product(bool, UseXmmLoadAndClearUpper, true, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
109 "Load low part of XMM register and clear upper part") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
110 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
111 product(bool, UseXmmRegToRegMoveAll, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
112 "Copy all XMM register bits when moving value between registers") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
113 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
114 product(bool, UseXmmI2D, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
115 "Use SSE2 CVTDQ2PD instruction to convert Integer to Double") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
116 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
117 product(bool, UseXmmI2F, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
118 "Use SSE2 CVTDQ2PS instruction to convert Integer to Float") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
119 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
120 product(bool, UseUnalignedLoadStores, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
121 "Use SSE2 MOVDQU instruction for Arraycopy") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
122 \
7474
00af3a3a8df4 8005522: use fast-string instructions on x86 for zeroing
kvn
parents: 6633
diff changeset
123 product(bool, UseFastStosb, false, \
00af3a3a8df4 8005522: use fast-string instructions on x86 for zeroing
kvn
parents: 6633
diff changeset
124 "Use fast-string operation for zeroing: rep stosb") \
00af3a3a8df4 8005522: use fast-string instructions on x86 for zeroing
kvn
parents: 6633
diff changeset
125 \
6633
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
126 /* assembler */ \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
127 product(bool, Use486InstrsOnly, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
128 "Use 80486 Compliant instruction subset") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
129 \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
130 product(bool, UseCountLeadingZerosInstruction, false, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
131 "Use count leading zeros instruction") \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 4952
diff changeset
132
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1868
diff changeset
133 #endif // CPU_X86_VM_GLOBALS_X86_HPP