Mercurial > hg > truffle
diff src/share/vm/runtime/arguments.cpp @ 1957:9752a6549f2e
Merge
author | zgu |
---|---|
date | Fri, 12 Nov 2010 09:37:13 -0500 |
parents | 35f885165c69 2db84614f61d |
children | 4110c3e0c50d |
line wrap: on
line diff
--- a/src/share/vm/runtime/arguments.cpp Fri Nov 05 09:32:08 2010 -0400 +++ b/src/share/vm/runtime/arguments.cpp Fri Nov 12 09:37:13 2010 -0500 @@ -203,6 +203,10 @@ JDK_Version::jdk_update(6,18), JDK_Version::jdk(7) }, { "UseDepthFirstScavengeOrder", JDK_Version::jdk_update(6,22), JDK_Version::jdk(7) }, + { "HandlePromotionFailure", + JDK_Version::jdk_update(6,24), JDK_Version::jdk(8) }, + { "MaxLiveObjectEvacuationRatio", + JDK_Version::jdk_update(6,24), JDK_Version::jdk(8) }, { NULL, JDK_Version(0), JDK_Version(0) } }; @@ -966,26 +970,54 @@ } } +void Arguments::check_compressed_oops_compat() { +#ifdef _LP64 + assert(UseCompressedOops, "Precondition"); +# if defined(COMPILER1) && !defined(TIERED) + // Until c1 supports compressed oops turn them off. + FLAG_SET_DEFAULT(UseCompressedOops, false); +# else + // Is it on by default or set on ergonomically + bool is_on_by_default = FLAG_IS_DEFAULT(UseCompressedOops) || FLAG_IS_ERGO(UseCompressedOops); + + // Tiered currently doesn't work with compressed oops + if (TieredCompilation) { + if (is_on_by_default) { + FLAG_SET_DEFAULT(UseCompressedOops, false); + return; + } else { + vm_exit_during_initialization( + "Tiered compilation is not supported with compressed oops yet", NULL); + } + } + + // If dumping an archive or forcing its use, disable compressed oops if possible + if (DumpSharedSpaces || RequireSharedSpaces) { + if (is_on_by_default) { + FLAG_SET_DEFAULT(UseCompressedOops, false); + return; + } else { + vm_exit_during_initialization( + "Class Data Sharing is not supported with compressed oops yet", NULL); + } + } else if (UseSharedSpaces) { + // UseSharedSpaces is on by default. With compressed oops, we turn it off. + FLAG_SET_DEFAULT(UseSharedSpaces, false); + } + +# endif // defined(COMPILER1) && !defined(TIERED) +#endif // _LP64 +} + void Arguments::set_tiered_flags() { if (FLAG_IS_DEFAULT(CompilationPolicyChoice)) { FLAG_SET_DEFAULT(CompilationPolicyChoice, 2); } - if (CompilationPolicyChoice < 2) { vm_exit_during_initialization( "Incompatible compilation policy selected", NULL); } - -#ifdef _LP64 - if (FLAG_IS_DEFAULT(UseCompressedOops) || FLAG_IS_ERGO(UseCompressedOops)) { - UseCompressedOops = false; - } - if (UseCompressedOops) { - vm_exit_during_initialization( - "Tiered compilation is not supported with compressed oops yet", NULL); - } -#endif - // Increase the code cache size - tiered compiles a lot more. + // Increase the code cache size - tiered compiles a lot more. if (FLAG_IS_DEFAULT(ReservedCodeCacheSize)) { FLAG_SET_DEFAULT(ReservedCodeCacheSize, ReservedCodeCacheSize * 2); } @@ -1741,8 +1773,6 @@ status = false; } - status = status && verify_percentage(MaxLiveObjectEvacuationRatio, - "MaxLiveObjectEvacuationRatio"); status = status && verify_percentage(AdaptiveSizePolicyWeight, "AdaptiveSizePolicyWeight"); status = status && verify_percentage(AdaptivePermSizeWeight, "AdaptivePermSizeWeight"); @@ -2846,6 +2876,7 @@ return JNI_OK; } + // Parse entry point called from JNI_CreateJavaVM jint Arguments::parse(const JavaVMInitArgs* args) { @@ -2988,17 +3019,6 @@ PrintGC = true; } -#if defined(_LP64) && defined(COMPILER1) && !defined(TIERED) - UseCompressedOops = false; -#endif - -#if defined(_LP64) - if ((DumpSharedSpaces || RequireSharedSpaces) && UseCompressedOops) { - // Disable compressed oops with shared spaces - UseCompressedOops = false; - } -#endif - // Set object alignment values. set_object_alignment(); @@ -3013,13 +3033,10 @@ set_ergonomics_flags(); #ifdef _LP64 - // XXX JSR 292 currently does not support compressed oops. - if (EnableMethodHandles && UseCompressedOops) { - if (FLAG_IS_DEFAULT(UseCompressedOops) || FLAG_IS_ERGO(UseCompressedOops)) { - UseCompressedOops = false; - } + if (UseCompressedOops) { + check_compressed_oops_compat(); } -#endif // _LP64 +#endif // Check the GC selections again. if (!check_gc_consistency()) {