equal
deleted
inserted
replaced
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 |