diff --git a/.hgtags b/.hgtags index 5aa4474c995b6f1ab3675785fa283d04dbaa1088..54970fa151e100f2ee2076b764e3d7ac686dd550 100644 --- a/.hgtags +++ b/.hgtags @@ -714,6 +714,8 @@ e0d75c284bd1c09fd7d9ef09627d8a99b88d468d jdk8u60-b21 ff8fdeb2fb6d6f3348597339c53412f8f6202c3f hs25.60-b22 878cb0df27c22c6b1e9f4add1eb3da3edc8ab51d jdk8u60-b22 0e4094950cd312c8f95c7f37336606323fe049fe jdk8u60-b23 +d89ceecf1bad55e1aee2932b8895d60fc64c15db hs25.60-b23 +fb157d537278cda4150740e27bb57cd8694e15bf jdk8u60-b24 0219ab69f00782e5c49687e2fa75138a7ffddea1 jdk8u52-b06 9b6f44853eed8caba935915c7e710c546b205c8e jdk8u52-b07 0219ab69f00782e5c49687e2fa75138a7ffddea1 jdk8u65-b00 diff --git a/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp b/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp index 8a3c46c2c3ce78be13254f4ed261f197ffefe257..859a15692cf9709f9700b1b4227dc30f9c2df22d 100644 --- a/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp +++ b/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp @@ -189,7 +189,7 @@ public: return CPUVisitor::visit(nodeh, state); } - PICL(bool is_fujitsu) : _L1_data_cache_line_size(0), _L2_data_cache_line_size(0), _dl_handle(NULL) { + PICL(bool is_fujitsu, bool is_sun4v) : _L1_data_cache_line_size(0), _L2_data_cache_line_size(0), _dl_handle(NULL) { if (!open_library()) { return; } @@ -201,7 +201,7 @@ public: if (is_fujitsu) { cpu_class = "core"; } - CPUVisitor cpu_visitor(this, os::processor_count()); + CPUVisitor cpu_visitor(this, (is_sun4v && !is_fujitsu) ? 1 : os::processor_count()); _picl_walk_tree_by_class(rooth, cpu_class, &cpu_visitor, PICL_visit_cpu_helper); if (cpu_visitor.l1_visitor()->is_assigned()) { // Is there a value? _L1_data_cache_line_size = cpu_visitor.l1_visitor()->value(); @@ -494,7 +494,7 @@ int VM_Version::platform_features(int features) { } // Figure out cache line sizes using PICL - PICL picl((features & sparc64_family_m) != 0); + PICL picl((features & sparc64_family_m) != 0, (features & sun4v_m) != 0); _L2_data_cache_line_size = picl.L2_data_cache_line_size(); return features; diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp index 917a62f9fb99ba17f6f12cca107e49b40fd20f2a..de5555fb7d58977150a42c00a1a9c8bc8954284d 100644 --- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp @@ -3339,9 +3339,11 @@ void CMSCollector::setup_cms_unloading_and_verification_state() { // Not unloading classes this cycle assert(!should_unload_classes(), "Inconsitency!"); + // If we are not unloading classes then add SO_AllCodeCache to root + // scanning options. + add_root_scanning_option(rso); + if ((!verifying() || unloaded_classes_last_cycle()) && should_verify) { - // Include symbols, strings and code cache elements to prevent their resurrection. - add_root_scanning_option(rso); set_verifying(true); } else if (verifying() && !should_verify) { // We were verifying, but some verification flags got disabled.