906
907 if (UseAdler32Intrinsics) {
908 warning("Adler32Intrinsics not available on this CPU.");
909 FLAG_SET_DEFAULT(UseAdler32Intrinsics, false);
910 }
911
912 if (!supports_rtm() && UseRTMLocking) {
913 // Can't continue because UseRTMLocking affects UseBiasedLocking flag
914 // setting during arguments processing. See use_biased_locking().
915 // VM_Version_init() is executed after UseBiasedLocking is used
916 // in Thread::allocate().
917 vm_exit_during_initialization("RTM instructions are not available on this CPU");
918 }
919
920 #if INCLUDE_RTM_OPT
921 if (UseRTMLocking) {
922 if (is_client_compilation_mode_vm()) {
923 // Only C2 does RTM locking optimization.
924 // Can't continue because UseRTMLocking affects UseBiasedLocking flag
925 // setting during arguments processing. See use_biased_locking().
926 vm_exit_during_initialization("RTM locking optimization is not supported in emulated client VM");
927 }
928 if (is_intel_family_core()) {
929 if ((_model == CPU_MODEL_HASWELL_E3) ||
930 (_model == CPU_MODEL_HASWELL_E7 && _stepping < 3) ||
931 (_model == CPU_MODEL_BROADWELL && _stepping < 4)) {
932 // currently a collision between SKL and HSW_E3
933 if (!UnlockExperimentalVMOptions && UseAVX < 3) {
934 vm_exit_during_initialization("UseRTMLocking is only available as experimental option on this "
935 "platform. It must be enabled via -XX:+UnlockExperimentalVMOptions flag.");
936 } else {
937 warning("UseRTMLocking is only available as experimental option on this platform.");
938 }
939 }
940 }
941 if (!FLAG_IS_CMDLINE(UseRTMLocking)) {
942 // RTM locking should be used only for applications with
943 // high lock contention. For now we do not use it by default.
944 vm_exit_during_initialization("UseRTMLocking flag should be only set on command line");
945 }
946 } else { // !UseRTMLocking
|
906
907 if (UseAdler32Intrinsics) {
908 warning("Adler32Intrinsics not available on this CPU.");
909 FLAG_SET_DEFAULT(UseAdler32Intrinsics, false);
910 }
911
912 if (!supports_rtm() && UseRTMLocking) {
913 // Can't continue because UseRTMLocking affects UseBiasedLocking flag
914 // setting during arguments processing. See use_biased_locking().
915 // VM_Version_init() is executed after UseBiasedLocking is used
916 // in Thread::allocate().
917 vm_exit_during_initialization("RTM instructions are not available on this CPU");
918 }
919
920 #if INCLUDE_RTM_OPT
921 if (UseRTMLocking) {
922 if (is_client_compilation_mode_vm()) {
923 // Only C2 does RTM locking optimization.
924 // Can't continue because UseRTMLocking affects UseBiasedLocking flag
925 // setting during arguments processing. See use_biased_locking().
926 vm_exit_during_initialization("RTM locking optimization is not supported in this VM");
927 }
928 if (is_intel_family_core()) {
929 if ((_model == CPU_MODEL_HASWELL_E3) ||
930 (_model == CPU_MODEL_HASWELL_E7 && _stepping < 3) ||
931 (_model == CPU_MODEL_BROADWELL && _stepping < 4)) {
932 // currently a collision between SKL and HSW_E3
933 if (!UnlockExperimentalVMOptions && UseAVX < 3) {
934 vm_exit_during_initialization("UseRTMLocking is only available as experimental option on this "
935 "platform. It must be enabled via -XX:+UnlockExperimentalVMOptions flag.");
936 } else {
937 warning("UseRTMLocking is only available as experimental option on this platform.");
938 }
939 }
940 }
941 if (!FLAG_IS_CMDLINE(UseRTMLocking)) {
942 // RTM locking should be used only for applications with
943 // high lock contention. For now we do not use it by default.
944 vm_exit_during_initialization("UseRTMLocking flag should be only set on command line");
945 }
946 } else { // !UseRTMLocking
|