< prev index next >

src/share/vm/memory/tenuredGeneration.cpp

Print this page
rev 7475 : imported patch cleanup
rev 7477 : imported patch move_stuff_up

*** 1,7 **** /* ! * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 233,366 **** bool TenuredGeneration::expand(size_t bytes, size_t expand_bytes) { GCMutexLocker x(ExpandHeap_lock); return CardGeneration::expand(bytes, expand_bytes); } - - void TenuredGeneration::shrink(size_t bytes) { - assert_locked_or_safepoint(ExpandHeap_lock); - size_t size = ReservedSpace::page_align_size_down(bytes); - if (size > 0) { - shrink_by(size); - } - } - - - size_t TenuredGeneration::capacity() const { - return _the_space->capacity(); - } - - - size_t TenuredGeneration::used() const { - return _the_space->used(); - } - - - size_t TenuredGeneration::free() const { - return _the_space->free(); - } - - MemRegion TenuredGeneration::used_region() const { - return the_space()->used_region(); - } - size_t TenuredGeneration::unsafe_max_alloc_nogc() const { return _the_space->free(); } size_t TenuredGeneration::contiguous_available() const { return _the_space->free() + _virtual_space.uncommitted_size(); } ! bool TenuredGeneration::grow_by(size_t bytes) { ! assert_locked_or_safepoint(ExpandHeap_lock); ! bool result = _virtual_space.expand_by(bytes); ! if (result) { ! size_t new_word_size = ! heap_word_size(_virtual_space.committed_size()); ! MemRegion mr(_the_space->bottom(), new_word_size); ! // Expand card table ! Universe::heap()->barrier_set()->resize_covered_region(mr); ! // Expand shared block offset array ! _bts->resize(new_word_size); ! ! // Fix for bug #4668531 ! if (ZapUnusedHeapArea) { ! MemRegion mangle_region(_the_space->end(), ! (HeapWord*)_virtual_space.high()); ! SpaceMangler::mangle_region(mangle_region); ! } ! ! // Expand space -- also expands space's BOT ! // (which uses (part of) shared array above) ! _the_space->set_end((HeapWord*)_virtual_space.high()); ! ! // update the space and generation capacity counters ! update_counters(); ! ! if (Verbose && PrintGC) { ! size_t new_mem_size = _virtual_space.committed_size(); ! size_t old_mem_size = new_mem_size - bytes; ! gclog_or_tty->print_cr("Expanding %s from " SIZE_FORMAT "K by " ! SIZE_FORMAT "K to " SIZE_FORMAT "K", ! name(), old_mem_size/K, bytes/K, new_mem_size/K); ! } ! } ! return result; ! } ! ! ! bool TenuredGeneration::grow_to_reserved() { ! assert_locked_or_safepoint(ExpandHeap_lock); ! bool success = true; ! const size_t remaining_bytes = _virtual_space.uncommitted_size(); ! if (remaining_bytes > 0) { ! success = grow_by(remaining_bytes); ! DEBUG_ONLY(if (!success) warning("grow to reserved failed");) ! } ! return success; ! } ! ! void TenuredGeneration::shrink_by(size_t bytes) { assert_locked_or_safepoint(ExpandHeap_lock); - // Shrink committed space - _virtual_space.shrink_by(bytes); - // Shrink space; this also shrinks the space's BOT - _the_space->set_end((HeapWord*) _virtual_space.high()); - size_t new_word_size = heap_word_size(_the_space->capacity()); - // Shrink the shared block offset array - _bts->resize(new_word_size); - MemRegion mr(_the_space->bottom(), new_word_size); - // Shrink the card table - Universe::heap()->barrier_set()->resize_covered_region(mr); - - if (Verbose && PrintGC) { - size_t new_mem_size = _virtual_space.committed_size(); - size_t old_mem_size = new_mem_size + bytes; - gclog_or_tty->print_cr("Shrinking %s from " SIZE_FORMAT "K to " SIZE_FORMAT "K", - name(), old_mem_size/K, new_mem_size/K); - } } // Currently nothing to do. void TenuredGeneration::prepare_for_verify() {} void TenuredGeneration::object_iterate(ObjectClosure* blk) { _the_space->object_iterate(blk); } - void TenuredGeneration::space_iterate(SpaceClosure* blk, - bool usedOnly) { - blk->do_space(_the_space); - } - - void TenuredGeneration::younger_refs_iterate(OopsInGenClosure* blk) { - blk->set_generation(this); - younger_refs_in_space_iterate(_the_space, blk); - blk->reset_generation(); - } - void TenuredGeneration::save_marks() { _the_space->set_saved_mark(); } --- 233,261 ---- bool TenuredGeneration::expand(size_t bytes, size_t expand_bytes) { GCMutexLocker x(ExpandHeap_lock); return CardGeneration::expand(bytes, expand_bytes); } size_t TenuredGeneration::unsafe_max_alloc_nogc() const { return _the_space->free(); } size_t TenuredGeneration::contiguous_available() const { return _the_space->free() + _virtual_space.uncommitted_size(); } ! void TenuredGeneration::assert_correct_size_change_locking() { assert_locked_or_safepoint(ExpandHeap_lock); } // Currently nothing to do. void TenuredGeneration::prepare_for_verify() {} void TenuredGeneration::object_iterate(ObjectClosure* blk) { _the_space->object_iterate(blk); } void TenuredGeneration::save_marks() { _the_space->set_saved_mark(); }
*** 390,412 **** void TenuredGeneration::gc_epilogue(bool full) { // update the generation and space performance counters update_counters(); if (ZapUnusedHeapArea) { ! the_space()->check_mangled_unused_area_complete(); } } void TenuredGeneration::record_spaces_top() { assert(ZapUnusedHeapArea, "Not mangling unused space"); ! the_space()->set_top_for_allocations(); } void TenuredGeneration::verify() { ! the_space()->verify(); } void TenuredGeneration::print_on(outputStream* st) const { Generation::print_on(st); st->print(" the"); ! the_space()->print_on(st); } --- 285,307 ---- void TenuredGeneration::gc_epilogue(bool full) { // update the generation and space performance counters update_counters(); if (ZapUnusedHeapArea) { ! _the_space->check_mangled_unused_area_complete(); } } void TenuredGeneration::record_spaces_top() { assert(ZapUnusedHeapArea, "Not mangling unused space"); ! _the_space->set_top_for_allocations(); } void TenuredGeneration::verify() { ! _the_space->verify(); } void TenuredGeneration::print_on(outputStream* st) const { Generation::print_on(st); st->print(" the"); ! _the_space->print_on(st); }
< prev index next >