< prev index next >
src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
Print this page
rev 8156 : [mq]: 8066444
@@ -1077,13 +1077,13 @@
return NULL;
}
}
assert(promoInfo->has_spooling_space(), "Control point invariant");
const size_t alloc_sz = CompactibleFreeListSpace::adjustObjectSize(word_sz);
- HeapWord* obj_ptr = ps->lab.alloc(alloc_sz);
+ HeapWord* obj_ptr = ps->lab.alloc(alloc_sz, old, m);
if (obj_ptr == NULL) {
- obj_ptr = expand_and_par_lab_allocate(ps, alloc_sz);
+ obj_ptr = expand_and_par_lab_allocate(ps, alloc_sz, old, m);
if (obj_ptr == NULL) {
return NULL;
}
}
oop obj = oop(obj_ptr);
@@ -2759,16 +2759,16 @@
CMSExpansionCause::to_string(cause));
}
}
}
-HeapWord* ConcurrentMarkSweepGeneration::expand_and_par_lab_allocate(CMSParGCThreadState* ps, size_t word_sz) {
+HeapWord* ConcurrentMarkSweepGeneration::expand_and_par_lab_allocate(CMSParGCThreadState* ps, size_t word_sz, oop old, markOop m) {
HeapWord* res = NULL;
MutexLocker x(ParGCRareEvent_lock);
while (true) {
// Expansion by some other thread might make alloc OK now:
- res = ps->lab.alloc(word_sz);
+ res = ps->lab.alloc(word_sz, old, m);
if (res != NULL) return res;
// If there's not enough expansion space available, give up.
if (_virtual_space.uncommitted_size() < (word_sz * HeapWordSize)) {
return NULL;
}
< prev index next >