1.1 --- a/src/share/vm/memory/defNewGeneration.cpp Thu Nov 20 12:27:41 2008 -0800 1.2 +++ b/src/share/vm/memory/defNewGeneration.cpp Thu Nov 20 16:56:09 2008 -0800 1.3 @@ -540,14 +540,6 @@ 1.4 assert(gch->no_allocs_since_save_marks(0), 1.5 "save marks have not been newly set."); 1.6 1.7 - // Weak refs. 1.8 - // FIXME: Are these storage leaks, or are they resource objects? 1.9 -#ifdef COMPILER2 1.10 - ReferencePolicy *soft_ref_policy = new LRUMaxHeapPolicy(); 1.11 -#else 1.12 - ReferencePolicy *soft_ref_policy = new LRUCurrentHeapPolicy(); 1.13 -#endif // COMPILER2 1.14 - 1.15 // Not very pretty. 1.16 CollectorPolicy* cp = gch->collector_policy(); 1.17 1.18 @@ -574,8 +566,10 @@ 1.19 evacuate_followers.do_void(); 1.20 1.21 FastKeepAliveClosure keep_alive(this, &scan_weak_ref); 1.22 - ref_processor()->process_discovered_references( 1.23 - soft_ref_policy, &is_alive, &keep_alive, &evacuate_followers, NULL); 1.24 + ReferenceProcessor* rp = ref_processor(); 1.25 + rp->snap_policy(clear_all_soft_refs); 1.26 + rp->process_discovered_references(&is_alive, &keep_alive, &evacuate_followers, 1.27 + NULL); 1.28 if (!promotion_failed()) { 1.29 // Swap the survivor spaces. 1.30 eden()->clear(SpaceDecorator::Mangle);