< prev index next >

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

Print this page
rev 55608 : Rename ShenandoahBrooksPointer to ShenandoahForwarding
rev 55609 : Eliminate extra forwarding pointer per object

*** 30,40 **** #include "gc/shared/parallelCleaning.hpp" #include "gc/shared/plab.hpp" #include "gc/shenandoah/shenandoahAllocTracker.hpp" #include "gc/shenandoah/shenandoahBarrierSet.hpp" - #include "gc/shenandoah/shenandoahForwarding.hpp" #include "gc/shenandoah/shenandoahClosures.inline.hpp" #include "gc/shenandoah/shenandoahCollectionSet.hpp" #include "gc/shenandoah/shenandoahCollectorPolicy.hpp" #include "gc/shenandoah/shenandoahConcurrentMark.inline.hpp" #include "gc/shenandoah/shenandoahControlThread.hpp" --- 30,39 ----
*** 129,139 **** } } }; jint ShenandoahHeap::initialize() { - ShenandoahForwarding::initial_checks(); initialize_heuristics(); // // Figure out heap sizing --- 128,137 ----
*** 852,904 **** HeapWord* ShenandoahHeap::allocate_memory_under_lock(ShenandoahAllocRequest& req, bool& in_new_region) { ShenandoahHeapLocker locker(lock()); return _free_set->allocate(req, in_new_region); } - class ShenandoahMemAllocator : public MemAllocator { - private: - MemAllocator& _initializer; - public: - ShenandoahMemAllocator(MemAllocator& initializer, Klass* klass, size_t word_size, Thread* thread) : - MemAllocator(klass, word_size + ShenandoahForwarding::word_size(), thread), - _initializer(initializer) {} - - protected: - virtual HeapWord* mem_allocate(Allocation& allocation) const { - HeapWord* result = MemAllocator::mem_allocate(allocation); - // Initialize brooks-pointer - if (result != NULL) { - result += ShenandoahForwarding::word_size(); - ShenandoahForwarding::initialize(oop(result)); - assert(! ShenandoahHeap::heap()->in_collection_set(result), "never allocate in targetted region"); - } - return result; - } - - virtual oop initialize(HeapWord* mem) const { - return _initializer.initialize(mem); - } - }; - - oop ShenandoahHeap::obj_allocate(Klass* klass, int size, TRAPS) { - ObjAllocator initializer(klass, size, THREAD); - ShenandoahMemAllocator allocator(initializer, klass, size, THREAD); - return allocator.allocate(); - } - - oop ShenandoahHeap::array_allocate(Klass* klass, int size, int length, bool do_zero, TRAPS) { - ObjArrayAllocator initializer(klass, size, length, do_zero, THREAD); - ShenandoahMemAllocator allocator(initializer, klass, size, THREAD); - return allocator.allocate(); - } - - oop ShenandoahHeap::class_allocate(Klass* klass, int size, TRAPS) { - ClassAllocator initializer(klass, size, THREAD); - ShenandoahMemAllocator allocator(initializer, klass, size, THREAD); - return allocator.allocate(); - } - HeapWord* ShenandoahHeap::mem_allocate(size_t size, bool* gc_overhead_limit_was_exceeded) { ShenandoahAllocRequest req = ShenandoahAllocRequest::for_shared(size); return allocate_memory(req); } --- 850,859 ----
*** 937,966 **** // Out of memory return NULL; } - void ShenandoahHeap::fill_with_dummy_object(HeapWord* start, HeapWord* end, bool zap) { - HeapWord* obj = tlab_post_allocation_setup(start); - CollectedHeap::fill_with_object(obj, end); - } - - size_t ShenandoahHeap::min_dummy_object_size() const { - return CollectedHeap::min_dummy_object_size() + ShenandoahForwarding::word_size(); - } - class ShenandoahConcurrentEvacuateRegionObjectClosure : public ObjectClosure { private: ShenandoahHeap* const _heap; Thread* const _thread; public: ShenandoahConcurrentEvacuateRegionObjectClosure(ShenandoahHeap* heap) : _heap(heap), _thread(Thread::current()) {} void do_object(oop p) { shenandoah_assert_marked(NULL, p); ! if (oopDesc::equals_raw(p, ShenandoahBarrierSet::resolve_forwarded_not_null(p))) { _heap->evacuate_object(p, _thread); } } }; --- 892,912 ---- // Out of memory return NULL; } class ShenandoahConcurrentEvacuateRegionObjectClosure : public ObjectClosure { private: ShenandoahHeap* const _heap; Thread* const _thread; public: ShenandoahConcurrentEvacuateRegionObjectClosure(ShenandoahHeap* heap) : _heap(heap), _thread(Thread::current()) {} void do_object(oop p) { shenandoah_assert_marked(NULL, p); ! if (!p->is_forwarded()) { _heap->evacuate_object(p, _thread); } } };
*** 1036,1047 **** } void ShenandoahHeap::trash_humongous_region_at(ShenandoahHeapRegion* start) { assert(start->is_humongous_start(), "reclaim regions starting with the first one"); ! oop humongous_obj = oop(start->bottom() + ShenandoahForwarding::word_size()); ! size_t size = humongous_obj->size() + ShenandoahForwarding::word_size(); size_t required_regions = ShenandoahHeapRegion::required_regions(size * HeapWordSize); size_t index = start->region_number() + required_regions - 1; assert(!start->has_live(), "liveness must be zero"); --- 982,993 ---- } void ShenandoahHeap::trash_humongous_region_at(ShenandoahHeapRegion* start) { assert(start->is_humongous_start(), "reclaim regions starting with the first one"); ! oop humongous_obj = oop(start->bottom()); ! size_t size = humongous_obj->size(); size_t required_regions = ShenandoahHeapRegion::required_regions(size * HeapWordSize); size_t index = start->region_number() + required_regions - 1; assert(!start->has_live(), "liveness must be zero");
*** 1846,1862 **** 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 + ShenandoahForwarding::word_size(); - ShenandoahForwarding::initialize(oop(result)); - return result; - } - void ShenandoahHeap::ref_processing_init() { assert(_max_workers > 0, "Sanity"); _ref_processor = new ReferenceProcessor(&_subject_to_discovery, // is_subject_to_discovery --- 1792,1801 ----
*** 2815,2827 **** r->increase_live_data_gc_words(live); ld[i] = 0; } } } - - size_t ShenandoahHeap::obj_size(oop obj) const { - return CollectedHeap::obj_size(obj) + ShenandoahForwarding::word_size(); - } - - ptrdiff_t ShenandoahHeap::cell_header_size() const { - return ShenandoahForwarding::byte_size(); - } --- 2754,2758 ----
< prev index next >