diff -r f0344cc50a90 -r 930691003b55 hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp --- a/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp Mon Jul 30 09:49:25 2012 -0700 +++ b/hotspot/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp Wed Aug 01 14:10:32 2012 -0700 @@ -201,13 +201,23 @@ impl[i] = (char)toupper((uint)impl[i]); if (strstr(impl, "SPARC64") != NULL) { features |= sparc64_family_m; + } else if (strstr(impl, "SPARC-M") != NULL) { + // M-series SPARC is based on T-series. + features |= (M_family_m | T_family_m); } else if (strstr(impl, "SPARC-T") != NULL) { features |= T_family_m; if (strstr(impl, "SPARC-T1") != NULL) { features |= T1_model_m; } } else { - assert(strstr(impl, "SPARC") != NULL, "should be sparc"); + if (strstr(impl, "SPARC") == NULL) { +#ifndef PRODUCT + // kstat on Solaris 8 virtual machines (branded zones) + // returns "(unsupported)" implementation. + warning("kstat cpu_info implementation = '%s', should contain SPARC", impl); +#endif + implementation = "SPARC"; + } } free((void*)impl); break;