< prev index next >

src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp

Print this page
rev 7903 : imported patch skip_stale

*** 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. --- 1,7 ---- /* ! * Copyright (c) 2001, 2015, 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.
*** 220,229 **** --- 220,250 ---- return _bm.par_clear_bit(heapWordToOffset(addr)); } #undef check_mark + inline bool CMTask::is_stale_humongous_queue_entry(oop obj) const { + // When a humongous object is eagerly reclaimed, we don't remove + // entries for it from queues. Instead, we filter out such entries + // on the processing side. + // + // Recently allocated objects are filtered out when queuing, to + // minimize queue size and processing time. Therefore, if we find + // what appears to be a recently allocated object in the queue, it + // must be for a reclaimed humongous object. + HeapRegion* hr = _g1h->heap_region_containing_raw(obj); + bool result = hr->obj_allocated_since_next_marking(obj); + #ifdef ASSERT + if (result) { + HeapWord* hp = (HeapWord*)obj; + assert(hp == hr->bottom(), "stale humongous should be at region bottom"); + assert(!_nextMarkBitMap->isMarked(hp), "stale humongous should not be marked"); + } + #endif + return result; + } + inline void CMTask::push(oop obj) { HeapWord* objAddr = (HeapWord*) obj; assert(_g1h->is_in_g1_reserved(objAddr), "invariant"); assert(!_g1h->is_on_master_free_list( _g1h->heap_region_containing((HeapWord*) objAddr)), "invariant");
< prev index next >