comparison src/share/vm/gc_implementation/shared/mutableSpace.cpp @ 6725:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents b632e80fc9dc
children db9981fd3124
comparison
equal deleted inserted replaced
6724:36d1d483d5d6 6725:da91efe96a93
214 bool MutableSpace::cas_deallocate(HeapWord *obj, size_t size) { 214 bool MutableSpace::cas_deallocate(HeapWord *obj, size_t size) {
215 HeapWord* expected_top = obj + size; 215 HeapWord* expected_top = obj + size;
216 return (HeapWord*)Atomic::cmpxchg_ptr(obj, top_addr(), expected_top) == expected_top; 216 return (HeapWord*)Atomic::cmpxchg_ptr(obj, top_addr(), expected_top) == expected_top;
217 } 217 }
218 218
219 void MutableSpace::oop_iterate(OopClosure* cl) { 219 void MutableSpace::oop_iterate(ExtendedOopClosure* cl) {
220 HeapWord* obj_addr = bottom(); 220 HeapWord* obj_addr = bottom();
221 HeapWord* t = top(); 221 HeapWord* t = top();
222 // Could call objects iterate, but this is easier. 222 // Could call objects iterate, but this is easier.
223 while (obj_addr < t) { 223 while (obj_addr < t) {
224 obj_addr += oop(obj_addr)->oop_iterate(cl); 224 obj_addr += oop(obj_addr)->oop_iterate(cl);
225 }
226 }
227
228 void MutableSpace::oop_iterate_no_header(OopClosure* cl) {
229 HeapWord* obj_addr = bottom();
230 HeapWord* t = top();
231 // Could call objects iterate, but this is easier.
232 while (obj_addr < t) {
233 obj_addr += oop(obj_addr)->oop_iterate_no_header(cl);
225 } 234 }
226 } 235 }
227 236
228 void MutableSpace::object_iterate(ObjectClosure* cl) { 237 void MutableSpace::object_iterate(ObjectClosure* cl) {
229 HeapWord* p = bottom(); 238 HeapWord* p = bottom();