< prev index next >
src/share/vm/gc/shenandoah/shenandoahHeap.inline.hpp
Print this page
rev 12191 : Improve handling of cancelled-gc flag.
@@ -186,12 +186,15 @@
return heap_oop;
}
}
inline bool ShenandoahHeap::cancelled_concgc() const {
- bool cancelled = _cancelled_concgc;
- return cancelled;
+ return (jbyte) OrderAccess::load_acquire((jbyte*) &_cancelled_concgc);
+}
+
+inline void ShenandoahHeap::set_cancelled_concgc(bool v) {
+ OrderAccess::release_store_fence((jbyte*) &_cancelled_concgc, (jbyte) v);
}
inline HeapWord* ShenandoahHeap::allocate_from_gclab(Thread* thread, size_t size) {
if (UseTLAB) {
HeapWord* obj = thread->gclab().allocate(size);
@@ -235,15 +238,10 @@
required = BrooksPointer::word_size() + p->size();
#endif
assert(! heap_region_containing(p)->is_humongous(), "never evacuate humongous objects");
- // Don't even attempt to evacuate anything if evacuation has been cancelled.
- if (_cancelled_concgc) {
- return ShenandoahBarrierSet::resolve_oop_static(p);
- }
-
bool alloc_from_gclab = true;
HeapWord* filler = allocate_from_gclab(thread, required);
if (filler == NULL) {
filler = allocate_memory(required, true);
alloc_from_gclab = false;
< prev index next >