int VM_Version::determine_features() { if (UseV8InstrsOnly) { if (PrintMiscellaneous && Verbose) { tty->print_cr("Version is Forced-V8"); } return generic_v8_m; } int features = platform_features(unknown_m); // platform_features() is os_arch specific if (features == unknown_m) { features = generic_v9_m; warning("Cannot recognize SPARC version. Default to V9"); } assert(is_T_family(features) == is_niagara(features), "Niagara should be T series"); if (UseNiagaraInstrs) { // Force code generation for Niagara if (is_T_family(features)) { // Happy to accomodate... } else { if (PrintMiscellaneous && Verbose) { tty->print_cr("Version is Forced-Niagara"); } features |= T_family_m; } } else { if (is_T_family(features) && !FLAG_IS_DEFAULT(UseNiagaraInstrs)) { if (PrintMiscellaneous && Verbose) { tty->print_cr("Version is Forced-Not-Niagara"); } features &= ~(T_family_m | T1_model_m); } else { // Happy to accomodate... } } return features; }
static bool is_niagara() { return is_T_family(_features); }
static bool is_T4() { return is_T_family(_features) && has_cbcond(); }
// Returns true if the platform is in the niagara line (T series) // and newer than the niagara1. static bool is_niagara_plus() { return is_T_family(_features) && !is_T1_model(_features); }
// Returns true if it is niagara1 (T1). static bool is_T1_model(int features) { return is_T_family(features) && ((features & T1_model_m) != 0); }
static bool is_T7() { return is_T_family(_features) && has_sparc5_instr(); }