Path: blob/master/src/hotspot/share/gc/z/zCollectedHeap.hpp
40960 views
/*1* Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223#ifndef SHARE_GC_Z_ZCOLLECTEDHEAP_HPP24#define SHARE_GC_Z_ZCOLLECTEDHEAP_HPP2526#include "gc/shared/collectedHeap.hpp"27#include "gc/shared/softRefPolicy.hpp"28#include "gc/z/zBarrierSet.hpp"29#include "gc/z/zHeap.hpp"30#include "gc/z/zInitialize.hpp"31#include "gc/z/zRuntimeWorkers.hpp"32#include "memory/metaspace.hpp"3334class ZDirector;35class ZDriver;36class ZStat;3738class ZCollectedHeap : public CollectedHeap {39friend class VMStructs;4041private:42SoftRefPolicy _soft_ref_policy;43ZBarrierSet _barrier_set;44ZInitialize _initialize;45ZHeap _heap;46ZDirector* _director;47ZDriver* _driver;48ZStat* _stat;49ZRuntimeWorkers _runtime_workers;5051virtual HeapWord* allocate_new_tlab(size_t min_size,52size_t requested_size,53size_t* actual_size);5455public:56static ZCollectedHeap* heap();5758ZCollectedHeap();59virtual Name kind() const;60virtual const char* name() const;61virtual jint initialize();62virtual void initialize_serviceability();63virtual void stop();6465virtual SoftRefPolicy* soft_ref_policy();6667virtual size_t max_capacity() const;68virtual size_t capacity() const;69virtual size_t used() const;70virtual size_t unused() const;7172virtual bool is_maximal_no_gc() const;73virtual bool is_in(const void* p) const;7475virtual uint32_t hash_oop(oop obj) const;7677virtual oop array_allocate(Klass* klass, int size, int length, bool do_zero, TRAPS);78virtual HeapWord* mem_allocate(size_t size, bool* gc_overhead_limit_was_exceeded);79virtual MetaWord* satisfy_failed_metadata_allocation(ClassLoaderData* loader_data,80size_t size,81Metaspace::MetadataType mdtype);82virtual void collect(GCCause::Cause cause);83virtual void collect_as_vm_thread(GCCause::Cause cause);84virtual void do_full_collection(bool clear_all_soft_refs);8586virtual size_t tlab_capacity(Thread* thr) const;87virtual size_t tlab_used(Thread* thr) const;88virtual size_t max_tlab_size() const;89virtual size_t unsafe_max_tlab_alloc(Thread* thr) const;9091virtual bool uses_stack_watermark_barrier() const;9293virtual GrowableArray<GCMemoryManager*> memory_managers();94virtual GrowableArray<MemoryPool*> memory_pools();9596virtual void object_iterate(ObjectClosure* cl);97virtual ParallelObjectIterator* parallel_object_iterator(uint nworkers);9899virtual void keep_alive(oop obj);100101virtual void register_nmethod(nmethod* nm);102virtual void unregister_nmethod(nmethod* nm);103virtual void flush_nmethod(nmethod* nm);104virtual void verify_nmethod(nmethod* nmethod);105106virtual WorkGang* safepoint_workers();107108virtual void gc_threads_do(ThreadClosure* tc) const;109110virtual VirtualSpaceSummary create_heap_space_summary();111112virtual void safepoint_synchronize_begin();113virtual void safepoint_synchronize_end();114115virtual void print_on(outputStream* st) const;116virtual void print_on_error(outputStream* st) const;117virtual void print_extended_on(outputStream* st) const;118virtual void print_tracing_info() const;119virtual bool print_location(outputStream* st, void* addr) const;120121virtual void prepare_for_verify();122virtual void verify(VerifyOption option /* ignored */);123virtual bool is_oop(oop object) const;124virtual bool supports_concurrent_gc_breakpoints() const;125};126127#endif // SHARE_GC_Z_ZCOLLECTEDHEAP_HPP128129130