hotspot/src/share/vm/memory/genMarkSweep.cpp
changeset 5343 95a5c4b89273
parent 5076 8b74a4b60b31
child 5547 f4b087cbb361
equal deleted inserted replaced
5245:431efce7a0af 5343:95a5c4b89273
     1 /*
     1 /*
     2  * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
     2  * Copyright 2001-2010 Sun Microsystems, Inc.  All Rights Reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    27 
    27 
    28 void GenMarkSweep::invoke_at_safepoint(int level, ReferenceProcessor* rp,
    28 void GenMarkSweep::invoke_at_safepoint(int level, ReferenceProcessor* rp,
    29   bool clear_all_softrefs) {
    29   bool clear_all_softrefs) {
    30   assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint");
    30   assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint");
    31 
    31 
       
    32   GenCollectedHeap* gch = GenCollectedHeap::heap();
       
    33 #ifdef ASSERT
       
    34   if (gch->collector_policy()->should_clear_all_soft_refs()) {
       
    35     assert(clear_all_softrefs, "Policy should have been checked earlier");
       
    36   }
       
    37 #endif
       
    38 
    32   // hook up weak ref data so it can be used during Mark-Sweep
    39   // hook up weak ref data so it can be used during Mark-Sweep
    33   assert(ref_processor() == NULL, "no stomping");
    40   assert(ref_processor() == NULL, "no stomping");
    34   assert(rp != NULL, "should be non-NULL");
    41   assert(rp != NULL, "should be non-NULL");
    35   _ref_processor = rp;
    42   _ref_processor = rp;
    36   rp->setup_policy(clear_all_softrefs);
    43   rp->setup_policy(clear_all_softrefs);
    42   CodeCache::gc_prologue();
    49   CodeCache::gc_prologue();
    43   Threads::gc_prologue();
    50   Threads::gc_prologue();
    44 
    51 
    45   // Increment the invocation count for the permanent generation, since it is
    52   // Increment the invocation count for the permanent generation, since it is
    46   // implicitly collected whenever we do a full mark sweep collection.
    53   // implicitly collected whenever we do a full mark sweep collection.
    47   GenCollectedHeap* gch = GenCollectedHeap::heap();
       
    48   gch->perm_gen()->stat_record()->invocations++;
    54   gch->perm_gen()->stat_record()->invocations++;
    49 
    55 
    50   // Capture heap size before collection for printing.
    56   // Capture heap size before collection for printing.
    51   size_t gch_prev_used = gch->used();
    57   size_t gch_prev_used = gch->used();
    52 
    58