comparison src/share/vm/runtime/sweeper.cpp @ 993:54b3b351d6f9

Merge
author jrose
date Wed, 23 Sep 2009 23:56:15 -0700
parents 148e5441d916 8b46c4d82093
children a1423fe86a18
comparison
equal deleted inserted replaced
992:6a8ccac44f41 993:54b3b351d6f9
134 // If it is first time, we see nmethod then we mark it. Otherwise, 134 // If it is first time, we see nmethod then we mark it. Otherwise,
135 // we reclame it. When we have seen a zombie method twice, we know that 135 // we reclame it. When we have seen a zombie method twice, we know that
136 // there are no inline caches that referes to it. 136 // there are no inline caches that referes to it.
137 if (nm->is_marked_for_reclamation()) { 137 if (nm->is_marked_for_reclamation()) {
138 assert(!nm->is_locked_by_vm(), "must not flush locked nmethods"); 138 assert(!nm->is_locked_by_vm(), "must not flush locked nmethods");
139 if (PrintMethodFlushing && Verbose) {
140 tty->print_cr("### Nmethod 0x%x (marked for reclamation) being flushed", nm);
141 }
139 nm->flush(); 142 nm->flush();
140 } else { 143 } else {
144 if (PrintMethodFlushing && Verbose) {
145 tty->print_cr("### Nmethod 0x%x (zombie) being marked for reclamation", nm);
146 }
141 nm->mark_for_reclamation(); 147 nm->mark_for_reclamation();
142 _rescan = true; 148 _rescan = true;
143 } 149 }
144 } else if (nm->is_not_entrant()) { 150 } else if (nm->is_not_entrant()) {
145 // If there is no current activations of this method on the 151 // If there is no current activations of this method on the
146 // stack we can safely convert it to a zombie method 152 // stack we can safely convert it to a zombie method
147 if (nm->can_not_entrant_be_converted()) { 153 if (nm->can_not_entrant_be_converted()) {
154 if (PrintMethodFlushing && Verbose) {
155 tty->print_cr("### Nmethod 0x%x (not entrant) being made zombie", nm);
156 }
148 nm->make_zombie(); 157 nm->make_zombie();
149 _rescan = true; 158 _rescan = true;
150 } else { 159 } else {
151 // Still alive, clean up its inline caches 160 // Still alive, clean up its inline caches
152 nm->cleanup_inline_caches(); 161 nm->cleanup_inline_caches();
155 // long time we don't want to keep rescanning at every safepoint. 164 // long time we don't want to keep rescanning at every safepoint.
156 _not_entrant_seen_on_stack++; 165 _not_entrant_seen_on_stack++;
157 } 166 }
158 } else if (nm->is_unloaded()) { 167 } else if (nm->is_unloaded()) {
159 // Unloaded code, just make it a zombie 168 // Unloaded code, just make it a zombie
160 if (nm->is_osr_only_method()) { 169 if (PrintMethodFlushing && Verbose)
170 tty->print_cr("### Nmethod 0x%x (unloaded) being made zombie", nm);
171 if (nm->is_osr_method()) {
161 // No inline caches will ever point to osr methods, so we can just remove it 172 // No inline caches will ever point to osr methods, so we can just remove it
162 nm->flush(); 173 nm->flush();
163 } else { 174 } else {
164 nm->make_zombie(); 175 nm->make_zombie();
165 _rescan = true; 176 _rescan = true;