< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.hpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2013, 2018, Red Hat, Inc. All rights reserved. * * 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) 2013, 2019, Red Hat, Inc. All rights reserved. * * 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. *
*** 30,42 **** --- 30,44 ---- #include "gc/shenandoah/shenandoahHeap.hpp" #include "gc/shenandoah/shenandoahPacer.hpp" #include "utilities/sizes.hpp" class VMStructs; + class ShenandoahHeapRegionStateConstant; class ShenandoahHeapRegion : public ContiguousSpace { friend class VMStructs; + friend class ShenandoahHeapRegionStateConstant; private: /* Region state is described by a state machine. Transitions are guarded by heap lock, which allows changing the state of several regions atomically. Region states can be logically aggregated in groups.
*** 113,125 **** _pinned_humongous_start, // region is both humongous start and pinned _cset, // region is in collection set _pinned, // region is pinned _pinned_cset, // region is pinned and in cset (evac failure path) _trash, // region contains only trash }; ! const char* region_state_to_string(RegionState s) const { switch (s) { case _empty_uncommitted: return "Empty Uncommitted"; case _empty_committed: return "Empty Committed"; case _regular: return "Regular"; case _humongous_start: return "Humongous Start"; --- 115,128 ---- _pinned_humongous_start, // region is both humongous start and pinned _cset, // region is in collection set _pinned, // region is pinned _pinned_cset, // region is pinned and in cset (evac failure path) _trash, // region contains only trash + _REGION_STATES_NUM, // last }; ! static const char* region_state_to_string(RegionState s) { switch (s) { case _empty_uncommitted: return "Empty Uncommitted"; case _empty_committed: return "Empty Committed"; case _regular: return "Regular"; case _humongous_start: return "Humongous Start";
*** 155,164 **** --- 158,171 ---- } void report_illegal_transition(const char* method); public: + static const int region_states_num() { + return _REGION_STATES_NUM; + } + // Allowed transitions from the outside code: void make_regular_allocation(); void make_regular_bypass(); void make_humongous_start(); void make_humongous_cont();
*** 422,429 **** --- 429,438 ---- void oop_iterate_objects(OopIterateClosure* cl); void oop_iterate_humongous(OopIterateClosure* cl); inline void internal_increase_live_data(size_t s); + + void set_state(RegionState to); }; #endif // SHARE_GC_SHENANDOAH_SHENANDOAHHEAPREGION_HPP
< prev index next >