< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp

Print this page
rev 50094 : [mq]: gclab.patch
rev 50095 : [mq]: allocations-rt.patch

*** 22,31 **** --- 22,32 ---- */ #include "precompiled.hpp" #include "memory/allocation.hpp" + #include "gc/shared/collectedHeap.inline.hpp" #include "gc/shared/gcTimer.hpp" #include "gc/shared/gcTraceTime.inline.hpp" #include "gc/shared/parallelCleaning.hpp" #include "gc/shared/plab.hpp"
*** 797,818 **** HeapWord* ShenandoahHeap::allocate_memory_under_lock(size_t word_size, AllocType type, bool& in_new_region) { ShenandoahHeapLocker locker(lock()); return _free_set->allocate(word_size, type, in_new_region); } ! HeapWord* ShenandoahHeap::mem_allocate(size_t size, bool* gc_overhead_limit_was_exceeded) { - HeapWord* filler = allocate_memory(size + BrooksPointer::word_size(), _alloc_shared); - HeapWord* result = filler + BrooksPointer::word_size(); - if (filler != NULL) { - BrooksPointer::initialize(oop(result)); ! assert(! in_collection_set(result), "never allocate in targetted region"); ! return result; ! } else { ! return NULL; } } class ShenandoahEvacuateUpdateRootsClosure: public ExtendedOopClosure { private: ShenandoahHeap* _heap; --- 798,831 ---- HeapWord* ShenandoahHeap::allocate_memory_under_lock(size_t word_size, AllocType type, bool& in_new_region) { ShenandoahHeapLocker locker(lock()); return _free_set->allocate(word_size, type, in_new_region); } ! HeapWord* ShenandoahHeap::mem_allocate(size_t size, Klass* klass, Thread* thread, bool* gc_overhead_limit_was_exceeded) { ! size += BrooksPointer::word_size(); ! HeapWord* obj = allocate_from_tlab(klass, thread, size); ! if (obj == NULL) { ! obj = allocate_memory(size, _alloc_shared); } + + if (obj != NULL) { + obj = obj + BrooksPointer::word_size(); + BrooksPointer::initialize(oop(obj)); + assert(! in_collection_set(obj), "never allocate in targetted region"); + } + return obj; + } + + void ShenandoahHeap::fill_with_object_impl(HeapWord* start, size_t words, bool zap) { + if (words > 0) { + start += BrooksPointer::word_size(); + words -= BrooksPointer::word_size(); + } + CollectedHeap::fill_with_object_impl(start, words, zap); + BrooksPointer::initialize(oop(start)); } class ShenandoahEvacuateUpdateRootsClosure: public ExtendedOopClosure { private: ShenandoahHeap* _heap;
*** 1853,1869 **** void ShenandoahHeap::set_evacuation_in_progress(bool in_progress) { assert(ShenandoahSafepoint::is_at_shenandoah_safepoint(), "Only call this at safepoint"); set_gc_state_mask(EVACUATION, in_progress); } - HeapWord* ShenandoahHeap::tlab_post_allocation_setup(HeapWord* obj) { - // Initialize Brooks pointer for the next object - HeapWord* result = obj + BrooksPointer::word_size(); - BrooksPointer::initialize(oop(result)); - return result; - } - uint ShenandoahHeap::oop_extra_words() { return BrooksPointer::word_size(); } ShenandoahForwardedIsAliveClosure::ShenandoahForwardedIsAliveClosure() : --- 1866,1875 ----
< prev index next >