325 UseMultiplyToLenIntrinsic = true;
326 }
327 if (FLAG_IS_DEFAULT(UseMontgomeryMultiplyIntrinsic)) {
328 UseMontgomeryMultiplyIntrinsic = true;
329 }
330 if (FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) {
331 UseMontgomerySquareIntrinsic = true;
332 }
333 #endif
334
335 if (UseVectorizedMismatchIntrinsic) {
336 warning("UseVectorizedMismatchIntrinsic specified, but not available on this CPU.");
337 FLAG_SET_DEFAULT(UseVectorizedMismatchIntrinsic, false);
338 }
339
340 // This machine allows unaligned memory accesses
341 if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
342 FLAG_SET_DEFAULT(UseUnalignedAccesses, true);
343 }
344
345 check_virtualizations();
346 }
347
348 void VM_Version::check_virtualizations() {
349 #if defined(_AIX)
350 int rc = 0;
351 perfstat_partition_total_t pinfo;
352 rc = perfstat_partition_total(nullptr, &pinfo, sizeof(perfstat_partition_total_t), 1);
353 if (rc == 1) {
354 Abstract_VM_Version::_detected_virtualization = PowerVM;
355 }
356 #else
357 const char* info_file = "/proc/ppc64/lparcfg";
358 // system_type=...qemu indicates PowerKVM
359 // e.g. system_type=IBM pSeries (emulated by qemu)
360 char line[500];
361 FILE* fp = os::fopen(info_file, "r");
362 if (fp == nullptr) {
363 return;
364 }
|
325 UseMultiplyToLenIntrinsic = true;
326 }
327 if (FLAG_IS_DEFAULT(UseMontgomeryMultiplyIntrinsic)) {
328 UseMontgomeryMultiplyIntrinsic = true;
329 }
330 if (FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) {
331 UseMontgomerySquareIntrinsic = true;
332 }
333 #endif
334
335 if (UseVectorizedMismatchIntrinsic) {
336 warning("UseVectorizedMismatchIntrinsic specified, but not available on this CPU.");
337 FLAG_SET_DEFAULT(UseVectorizedMismatchIntrinsic, false);
338 }
339
340 // This machine allows unaligned memory accesses
341 if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
342 FLAG_SET_DEFAULT(UseUnalignedAccesses, true);
343 }
344
345 if (InlineTypePassFieldsAsArgs) {
346 warning("InlineTypePassFieldsAsArgs is not supported on this CPU");
347 FLAG_SET_DEFAULT(InlineTypePassFieldsAsArgs, false);
348 }
349 if (InlineTypeReturnedAsFields) {
350 warning("InlineTypeReturnedAsFields is not supported on this CPU");
351 FLAG_SET_DEFAULT(InlineTypeReturnedAsFields, false);
352 }
353
354 // TODO: Valhalla optimizations
355 if (FLAG_IS_DEFAULT(UseArrayFlattening )) FLAG_SET_DEFAULT(UseArrayFlattening , false);
356 if (FLAG_IS_DEFAULT(UseFieldFlattening )) FLAG_SET_DEFAULT(UseFieldFlattening , false);
357 if (FLAG_IS_DEFAULT(UseNullFreeNonAtomicValueFlattening)) FLAG_SET_DEFAULT(UseNullFreeNonAtomicValueFlattening, false);
358 if (FLAG_IS_DEFAULT(UseNullableAtomicValueFlattening )) FLAG_SET_DEFAULT(UseNullableAtomicValueFlattening , false);
359 if (FLAG_IS_DEFAULT(UseNullFreeAtomicValueFlattening )) FLAG_SET_DEFAULT(UseNullFreeAtomicValueFlattening , false);
360 if (FLAG_IS_DEFAULT(UseNullableNonAtomicValueFlattening)) FLAG_SET_DEFAULT(UseNullableNonAtomicValueFlattening, false);
361
362 check_virtualizations();
363 }
364
365 void VM_Version::check_virtualizations() {
366 #if defined(_AIX)
367 int rc = 0;
368 perfstat_partition_total_t pinfo;
369 rc = perfstat_partition_total(nullptr, &pinfo, sizeof(perfstat_partition_total_t), 1);
370 if (rc == 1) {
371 Abstract_VM_Version::_detected_virtualization = PowerVM;
372 }
373 #else
374 const char* info_file = "/proc/ppc64/lparcfg";
375 // system_type=...qemu indicates PowerKVM
376 // e.g. system_type=IBM pSeries (emulated by qemu)
377 char line[500];
378 FILE* fp = os::fopen(info_file, "r");
379 if (fp == nullptr) {
380 return;
381 }
|