< prev index next >

src/hotspot/cpu/ppc/vm_version_ppc.cpp

Print this page
rev 56744 : 8233078: fix minimal VM build on Linux ppc64(le)


 295       FLAG_SET_DEFAULT(UseSHA256Intrinsics, true);
 296     }
 297   } else if (UseSHA256Intrinsics) {
 298     warning("Intrinsics for SHA-224 and SHA-256 crypto hash functions not available on this CPU.");
 299     FLAG_SET_DEFAULT(UseSHA256Intrinsics, false);
 300   }
 301 
 302   if (UseSHA && has_vshasig()) {
 303     if (FLAG_IS_DEFAULT(UseSHA512Intrinsics)) {
 304       FLAG_SET_DEFAULT(UseSHA512Intrinsics, true);
 305     }
 306   } else if (UseSHA512Intrinsics) {
 307     warning("Intrinsics for SHA-384 and SHA-512 crypto hash functions not available on this CPU.");
 308     FLAG_SET_DEFAULT(UseSHA512Intrinsics, false);
 309   }
 310 
 311   if (!(UseSHA1Intrinsics || UseSHA256Intrinsics || UseSHA512Intrinsics)) {
 312     FLAG_SET_DEFAULT(UseSHA, false);
 313   }
 314 

 315   if (FLAG_IS_DEFAULT(UseSquareToLenIntrinsic)) {
 316     UseSquareToLenIntrinsic = true;
 317   }
 318   if (FLAG_IS_DEFAULT(UseMulAddIntrinsic)) {
 319     UseMulAddIntrinsic = true;
 320   }
 321   if (FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) {
 322     UseMultiplyToLenIntrinsic = true;
 323   }
 324   if (FLAG_IS_DEFAULT(UseMontgomeryMultiplyIntrinsic)) {
 325     UseMontgomeryMultiplyIntrinsic = true;
 326   }
 327   if (FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) {
 328     UseMontgomerySquareIntrinsic = true;
 329   }

 330 
 331   if (UseVectorizedMismatchIntrinsic) {
 332     warning("UseVectorizedMismatchIntrinsic specified, but not available on this CPU.");
 333     FLAG_SET_DEFAULT(UseVectorizedMismatchIntrinsic, false);
 334   }
 335 
 336 
 337   // Adjust RTM (Restricted Transactional Memory) flags.
 338   if (UseRTMLocking) {
 339     // If CPU or OS do not support TM:
 340     // Can't continue because UseRTMLocking affects UseBiasedLocking flag
 341     // setting during arguments processing. See use_biased_locking().
 342     // VM_Version_init() is executed after UseBiasedLocking is used
 343     // in Thread::allocate().
 344     if (PowerArchitecturePPC64 < 8) {
 345       vm_exit_during_initialization("RTM instructions are not available on this CPU.");
 346     }
 347 
 348     if (!has_tm()) {
 349       vm_exit_during_initialization("RTM is not supported on this OS version.");


 356       // RTM locking should be used only for applications with
 357       // high lock contention. For now we do not use it by default.
 358       vm_exit_during_initialization("UseRTMLocking flag should be only set on command line");
 359     }
 360 #else
 361     // Only C2 does RTM locking optimization.
 362     // Can't continue because UseRTMLocking affects UseBiasedLocking flag
 363     // setting during arguments processing. See use_biased_locking().
 364     vm_exit_during_initialization("RTM locking optimization is not supported in this VM");
 365 #endif
 366   } else { // !UseRTMLocking
 367     if (UseRTMForStackLocks) {
 368       if (!FLAG_IS_DEFAULT(UseRTMForStackLocks)) {
 369         warning("UseRTMForStackLocks flag should be off when UseRTMLocking flag is off");
 370       }
 371       FLAG_SET_DEFAULT(UseRTMForStackLocks, false);
 372     }
 373     if (UseRTMDeopt) {
 374       FLAG_SET_DEFAULT(UseRTMDeopt, false);
 375     }

 376     if (PrintPreciseRTMLockingStatistics) {
 377       FLAG_SET_DEFAULT(PrintPreciseRTMLockingStatistics, false);
 378     }

 379   }
 380 
 381   // This machine allows unaligned memory accesses
 382   if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
 383     FLAG_SET_DEFAULT(UseUnalignedAccesses, true);
 384   }
 385 
 386   check_virtualizations();
 387 }
 388 
 389 void VM_Version::check_virtualizations() {
 390 #if defined(_AIX)
 391   int rc = 0;
 392   perfstat_partition_total_t pinfo;
 393   rc = perfstat_partition_total(NULL, &pinfo, sizeof(perfstat_partition_total_t), 1);
 394   if (rc == 1) {
 395     Abstract_VM_Version::_detected_virtualization = PowerVM;
 396   }
 397 #else
 398   const char* info_file = "/proc/ppc64/lparcfg";




 295       FLAG_SET_DEFAULT(UseSHA256Intrinsics, true);
 296     }
 297   } else if (UseSHA256Intrinsics) {
 298     warning("Intrinsics for SHA-224 and SHA-256 crypto hash functions not available on this CPU.");
 299     FLAG_SET_DEFAULT(UseSHA256Intrinsics, false);
 300   }
 301 
 302   if (UseSHA && has_vshasig()) {
 303     if (FLAG_IS_DEFAULT(UseSHA512Intrinsics)) {
 304       FLAG_SET_DEFAULT(UseSHA512Intrinsics, true);
 305     }
 306   } else if (UseSHA512Intrinsics) {
 307     warning("Intrinsics for SHA-384 and SHA-512 crypto hash functions not available on this CPU.");
 308     FLAG_SET_DEFAULT(UseSHA512Intrinsics, false);
 309   }
 310 
 311   if (!(UseSHA1Intrinsics || UseSHA256Intrinsics || UseSHA512Intrinsics)) {
 312     FLAG_SET_DEFAULT(UseSHA, false);
 313   }
 314 
 315 #ifdef COMPILER2
 316   if (FLAG_IS_DEFAULT(UseSquareToLenIntrinsic)) {
 317     UseSquareToLenIntrinsic = true;
 318   }
 319   if (FLAG_IS_DEFAULT(UseMulAddIntrinsic)) {
 320     UseMulAddIntrinsic = true;
 321   }
 322   if (FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) {
 323     UseMultiplyToLenIntrinsic = true;
 324   }
 325   if (FLAG_IS_DEFAULT(UseMontgomeryMultiplyIntrinsic)) {
 326     UseMontgomeryMultiplyIntrinsic = true;
 327   }
 328   if (FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) {
 329     UseMontgomerySquareIntrinsic = true;
 330   }
 331 #endif
 332 
 333   if (UseVectorizedMismatchIntrinsic) {
 334     warning("UseVectorizedMismatchIntrinsic specified, but not available on this CPU.");
 335     FLAG_SET_DEFAULT(UseVectorizedMismatchIntrinsic, false);
 336   }
 337 
 338 
 339   // Adjust RTM (Restricted Transactional Memory) flags.
 340   if (UseRTMLocking) {
 341     // If CPU or OS do not support TM:
 342     // Can't continue because UseRTMLocking affects UseBiasedLocking flag
 343     // setting during arguments processing. See use_biased_locking().
 344     // VM_Version_init() is executed after UseBiasedLocking is used
 345     // in Thread::allocate().
 346     if (PowerArchitecturePPC64 < 8) {
 347       vm_exit_during_initialization("RTM instructions are not available on this CPU.");
 348     }
 349 
 350     if (!has_tm()) {
 351       vm_exit_during_initialization("RTM is not supported on this OS version.");


 358       // RTM locking should be used only for applications with
 359       // high lock contention. For now we do not use it by default.
 360       vm_exit_during_initialization("UseRTMLocking flag should be only set on command line");
 361     }
 362 #else
 363     // Only C2 does RTM locking optimization.
 364     // Can't continue because UseRTMLocking affects UseBiasedLocking flag
 365     // setting during arguments processing. See use_biased_locking().
 366     vm_exit_during_initialization("RTM locking optimization is not supported in this VM");
 367 #endif
 368   } else { // !UseRTMLocking
 369     if (UseRTMForStackLocks) {
 370       if (!FLAG_IS_DEFAULT(UseRTMForStackLocks)) {
 371         warning("UseRTMForStackLocks flag should be off when UseRTMLocking flag is off");
 372       }
 373       FLAG_SET_DEFAULT(UseRTMForStackLocks, false);
 374     }
 375     if (UseRTMDeopt) {
 376       FLAG_SET_DEFAULT(UseRTMDeopt, false);
 377     }
 378 #ifdef COMPILER2
 379     if (PrintPreciseRTMLockingStatistics) {
 380       FLAG_SET_DEFAULT(PrintPreciseRTMLockingStatistics, false);
 381     }
 382 #endif
 383   }
 384 
 385   // This machine allows unaligned memory accesses
 386   if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
 387     FLAG_SET_DEFAULT(UseUnalignedAccesses, true);
 388   }
 389 
 390   check_virtualizations();
 391 }
 392 
 393 void VM_Version::check_virtualizations() {
 394 #if defined(_AIX)
 395   int rc = 0;
 396   perfstat_partition_total_t pinfo;
 397   rc = perfstat_partition_total(NULL, &pinfo, sizeof(perfstat_partition_total_t), 1);
 398   if (rc == 1) {
 399     Abstract_VM_Version::_detected_virtualization = PowerVM;
 400   }
 401 #else
 402   const char* info_file = "/proc/ppc64/lparcfg";


< prev index next >