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