comparison src/share/vm/jvmci/jvmci_globals.cpp @ 23760:655fd63024d0

move jvmci flag handling to JVMCIGlobals
author David Leopoldseder <david.d.leopoldseder@oracle.com>
date Fri, 23 Sep 2016 16:33:12 +0200
parents 740feb10d15a
children 1fece5f8307c
comparison
equal deleted inserted replaced
23759:561a3f3a9b99 23760:655fd63024d0
22 * 22 *
23 */ 23 */
24 24
25 #include "precompiled.hpp" 25 #include "precompiled.hpp"
26 #include "jvmci/jvmci_globals.hpp" 26 #include "jvmci/jvmci_globals.hpp"
27 #include "utilities/defaultStream.hpp"
28 #include "runtime/globals_extension.hpp"
27 29
28 JVMCI_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PD_DEVELOPER_FLAG, MATERIALIZE_PRODUCT_FLAG, MATERIALIZE_PD_PRODUCT_FLAG, MATERIALIZE_NOTPRODUCT_FLAG) 30 JVMCI_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PD_DEVELOPER_FLAG, MATERIALIZE_PRODUCT_FLAG, MATERIALIZE_PD_PRODUCT_FLAG, MATERIALIZE_NOTPRODUCT_FLAG)
31
32 bool JVMCIGlobals::check_jvmci_flags_are_consistent() {
33 bool status = true;
34 if (!EnableJVMCI) {
35 #define JVMCI_CHECK3(type, name, doc) JVMCI_CHECK_FLAG(name)
36 #define JVMCI_CHECK4(type, name, value, doc) JVMCI_CHECK_FLAG(name)
37 #define JVMCI_CHECK_FLAG(FLAG) \
38 if (strcmp(#FLAG, "EnableJVMCI") && !FLAG_IS_DEFAULT(FLAG)) { \
39 jio_fprintf(defaultStream::error_stream(), "EnableJVMCI must be enabled to use VM option '%s'\n", #FLAG); \
40 status = false; \
41 }
42 JVMCI_FLAGS(JVMCI_CHECK4, JVMCI_CHECK3, JVMCI_CHECK4, JVMCI_CHECK3, JVMCI_CHECK4)
43 #undef JVMCI_CHECK3
44 #undef JVMCI_CHECK4
45 #undef JVMCI_CHECK_FLAG
46 } else {
47 #ifndef TIERED
48 // JVMCI is only usable as a jit compiler if the VM supports tiered compilation.
49 #define JVMCI_CHECK_FLAG(FLAG) \
50 if (!FLAG_IS_DEFAULT(FLAG)) { \
51 jio_fprintf(defaultStream::error_stream(), "VM option '%s' cannot be set in non-tiered VM\n", #FLAG); \
52 status = false; \
53 }
54 JVMCI_CHECK_FLAG(UseJVMCICompiler)
55 JVMCI_CHECK_FLAG(BootstrapJVMCI)
56 JVMCI_CHECK_FLAG(PrintBootstrap)
57 JVMCI_CHECK_FLAG(JVMCIThreads)
58 JVMCI_CHECK_FLAG(JVMCIHostThreads)
59 JVMCI_CHECK_FLAG(JVMCICountersExcludeCompiler)
60 #undef JVMCI_CHECK_FLAG
61 #endif
62 if (BootstrapJVMCI && !UseJVMCICompiler) {
63 warning("BootstrapJVMCI has no effect if UseJVMCICompiler is disabled");
64 }
65 }
66 if (UseJVMCICompiler) {
67 if(JVMCIThreads < 1) {
68 // Check the minimum number of JVMCI compiler threads
69 jio_fprintf(defaultStream::error_stream(), "JVMCIThreads of " INTX_FORMAT " is invalid; must be at least 1\n");
70 status = false;
71 }
72 }
73 return status;
74 }
75
76 void JVMCIGlobals::set_jvmci_specific_flags() {
77 if (UseJVMCICompiler) {
78 if (FLAG_IS_DEFAULT(TypeProfileWidth)) {
79 FLAG_SET_DEFAULT(TypeProfileWidth, 8);
80 }
81 if (FLAG_IS_DEFAULT(OnStackReplacePercentage)) {
82 FLAG_SET_DEFAULT(OnStackReplacePercentage, 933);
83 }
84 if (FLAG_IS_DEFAULT(ReservedCodeCacheSize)) {
85 FLAG_SET_DEFAULT(ReservedCodeCacheSize, 64*M);
86 }
87 if (FLAG_IS_DEFAULT(InitialCodeCacheSize)) {
88 FLAG_SET_DEFAULT(InitialCodeCacheSize, 16*M);
89 }
90 if (FLAG_IS_DEFAULT(MetaspaceSize)) {
91 FLAG_SET_DEFAULT(MetaspaceSize, 12*M);
92 }
93 if (FLAG_IS_DEFAULT(NewSizeThreadIncrease)) {
94 FLAG_SET_DEFAULT(NewSizeThreadIncrease, 4*K);
95 }
96 }
97 if (!ScavengeRootsInCode) {
98 warning("forcing ScavengeRootsInCode non-zero because JVMCI is enabled");
99 ScavengeRootsInCode = 1;
100 }
101 }