< prev index next >

src/hotspot/share/gc/g1/g1SATBCardTableModRefBS.hpp

RFE_8195103_reduce_initial_card_marks

*** 1,7 **** /* ! * Copyright (c) 2001, 2017, 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, 2018, 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. ***************
*** 90,99 **** --- 90,101 ---- bool is_card_deferred(size_t card_index) { jbyte val = _byte_map[card_index]; return (val & (clean_card_mask_val() | deferred_card_val())) == deferred_card_val(); } + + virtual bool is_in_young(oop obj) const; }; template<> struct BarrierSet::GetName<G1SATBCardTableModRefBS> { static const BarrierSet::Name value = BarrierSet::G1SATBCT; ***************
*** 143,159 **** // NB: if you do a whole-heap invalidation, the "usual invariant" defined // above no longer applies. void invalidate(MemRegion mr); ! void write_region_work(MemRegion mr) { invalidate(mr); } void write_ref_array_work(MemRegion mr) { invalidate(mr); } template <DecoratorSet decorators, typename T> void write_ref_field_post(T* field, oop new_val); void write_ref_field_post_slow(volatile jbyte* byte); // Callbacks for runtime accesses. template <DecoratorSet decorators, typename BarrierSetT = G1SATBCardTableLoggingModRefBS> class AccessBarrier: public ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> { typedef ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> ModRef; typedef BarrierSet::AccessBarrier<decorators, BarrierSetT> Raw; --- 145,167 ---- // NB: if you do a whole-heap invalidation, the "usual invariant" defined // above no longer applies. void invalidate(MemRegion mr); ! void write_region(MemRegion mr) { invalidate(mr); } void write_ref_array_work(MemRegion mr) { invalidate(mr); } template <DecoratorSet decorators, typename T> void write_ref_field_post(T* field, oop new_val); void write_ref_field_post_slow(volatile jbyte* byte); + virtual void flush_deferred_barriers(JavaThread* thread); + + virtual bool card_mark_must_follow_store() const { + return true; + } + // Callbacks for runtime accesses. template <DecoratorSet decorators, typename BarrierSetT = G1SATBCardTableLoggingModRefBS> class AccessBarrier: public ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> { typedef ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT> ModRef; typedef BarrierSet::AccessBarrier<decorators, BarrierSetT> Raw;
< prev index next >