Mercurial > hg > graal-compiler
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 |
rev | line source |
---|---|
0 | 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 | 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 * | |
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 | 22 * |
23 */ | |
24 | |
1972 | 25 #ifndef CPU_X86_VM_GLOBALS_X86_HPP |
26 #define CPU_X86_VM_GLOBALS_X86_HPP | |
27 | |
28 #include "utilities/globalDefinitions.hpp" | |
29 #include "utilities/macros.hpp" | |
30 | |
0 | 31 // Sets the default values for platform dependent flags used by the runtime system. |
32 // (see globals.hpp) | |
33 | |
1064 | 34 define_pd_global(bool, ConvertSleepToYield, true); |
35 define_pd_global(bool, ShareVtableStubs, true); | |
36 define_pd_global(bool, CountInterpCalls, true); | |
37 define_pd_global(bool, NeedsDeoptSuspend, false); // only register window machines need this | |
0 | 38 |
1064 | 39 define_pd_global(bool, ImplicitNullChecks, true); // Generate code for implicit null checks |
40 define_pd_global(bool, UncommonNullCast, true); // Uncommon-trap NULLs past to check cast | |
0 | 41 |
42 // See 4827828 for this change. There is no globals_core_i486.hpp. I can't | |
43 // assign a different value for C2 without touching a number of files. Use | |
44 // #ifdef to minimize the change as it's late in Mantis. -- FIXME. | |
45 // c1 doesn't have this problem because the fix to 4858033 assures us | |
46 // the the vep is aligned at CodeEntryAlignment whereas c2 only aligns | |
47 // the uep and the vep doesn't get real alignment but just slops on by | |
48 // only assured that the entry instruction meets the 5 byte size requirement. | |
49 #ifdef COMPILER2 | |
1064 | 50 define_pd_global(intx, CodeEntryAlignment, 32); |
0 | 51 #else |
1064 | 52 define_pd_global(intx, CodeEntryAlignment, 16); |
0 | 53 #endif // COMPILER2 |
1365 | 54 define_pd_global(intx, OptoLoopAlignment, 16); |
1064 | 55 define_pd_global(intx, InlineFrequencyCount, 100); |
56 define_pd_global(intx, InlineSmallCode, 1000); | |
0 | 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 | 59 define_pd_global(intx, StackRedPages, 1); |
0 | 60 #ifdef AMD64 |
61 // Very large C++ stack frames using solaris-amd64 optimized builds | |
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 | 64 #else |
4942 | 65 define_pd_global(intx, StackShadowPages, 4 DEBUG_ONLY(+5)); |
0 | 66 #endif // AMD64 |
67 | |
1064 | 68 define_pd_global(intx, PreInflateSpin, 10); |
0 | 69 |
70 define_pd_global(bool, RewriteBytecodes, true); | |
71 define_pd_global(bool, RewriteFrequentPairs, true); | |
1868
3dc12ef8735e
6989297: Integrate additional portability improvements
bobv
parents:
1552
diff
changeset
|
72 |
3960 | 73 #ifdef _ALLBSD_SOURCE |
74 define_pd_global(bool, UseMembar, true); | |
75 #else | |
1868
3dc12ef8735e
6989297: Integrate additional portability improvements
bobv
parents:
1552
diff
changeset
|
76 define_pd_global(bool, UseMembar, false); |
3960 | 77 #endif |
1972 | 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 | 133 #endif // CPU_X86_VM_GLOBALS_X86_HPP |