0 /*
1 * Copyright (c) 2001, 2017, 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 it
5 * under the terms of the GNU General Public License version 2 only, as
6 * published by the Free Software Foundation.
7 *
8 * This code is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 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 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
|
0 /*
1 * Copyright (c) 2001, 2018, 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 it
5 * under the terms of the GNU General Public License version 2 only, as
6 * published by the Free Software Foundation.
7 *
8 * This code is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 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 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
|
186 // references.
187 inline void invoke_scavenge();
188
189 // Perform a full collection
190 virtual void do_full_collection(bool clear_all_soft_refs);
191
192 bool supports_inline_contig_alloc() const { return !UseNUMA; }
193
194 HeapWord* volatile* top_addr() const { return !UseNUMA ? young_gen()->top_addr() : (HeapWord* volatile*)-1; }
195 HeapWord** end_addr() const { return !UseNUMA ? young_gen()->end_addr() : (HeapWord**)-1; }
196
197 void ensure_parsability(bool retire_tlabs);
198 void accumulate_statistics_all_tlabs();
199 void resize_all_tlabs();
200
201 bool supports_tlab_allocation() const { return true; }
202
203 size_t tlab_capacity(Thread* thr) const;
204 size_t tlab_used(Thread* thr) const;
205 size_t unsafe_max_tlab_alloc(Thread* thr) const;
206
207 // Can a compiler initialize a new object without store barriers?
208 // This permission only extends from the creation of a new object
209 // via a TLAB up to the first subsequent safepoint.
210 virtual bool can_elide_tlab_store_barriers() const {
211 return true;
212 }
213
214 virtual bool card_mark_must_follow_store() const {
215 return false;
216 }
217
218 // Return true if we don't we need a store barrier for
219 // initializing stores to an object at this address.
220 virtual bool can_elide_initializing_store_barrier(oop new_obj);
221
222 void object_iterate(ObjectClosure* cl);
223 void safe_object_iterate(ObjectClosure* cl) { object_iterate(cl); }
224
225 HeapWord* block_start(const void* addr) const;
226 size_t block_size(const HeapWord* addr) const;
227 bool block_is_obj(const HeapWord* addr) const;
228
229 jlong millis_since_last_gc();
230
231 void prepare_for_verify();
232 PSHeapSummary create_ps_heap_summary();
233 virtual void print_on(outputStream* st) const;
234 virtual void print_on_error(outputStream* st) const;
235 virtual void print_gc_threads_on(outputStream* st) const;
236 virtual void gc_threads_do(ThreadClosure* tc) const;
237 virtual void print_tracing_info() const;
238
239 void verify(VerifyOption option /* ignored */);
|
186 // references.
187 inline void invoke_scavenge();
188
189 // Perform a full collection
190 virtual void do_full_collection(bool clear_all_soft_refs);
191
192 bool supports_inline_contig_alloc() const { return !UseNUMA; }
193
194 HeapWord* volatile* top_addr() const { return !UseNUMA ? young_gen()->top_addr() : (HeapWord* volatile*)-1; }
195 HeapWord** end_addr() const { return !UseNUMA ? young_gen()->end_addr() : (HeapWord**)-1; }
196
197 void ensure_parsability(bool retire_tlabs);
198 void accumulate_statistics_all_tlabs();
199 void resize_all_tlabs();
200
201 bool supports_tlab_allocation() const { return true; }
202
203 size_t tlab_capacity(Thread* thr) const;
204 size_t tlab_used(Thread* thr) const;
205 size_t unsafe_max_tlab_alloc(Thread* thr) const;
206
207 void object_iterate(ObjectClosure* cl);
208 void safe_object_iterate(ObjectClosure* cl) { object_iterate(cl); }
209
210 HeapWord* block_start(const void* addr) const;
211 size_t block_size(const HeapWord* addr) const;
212 bool block_is_obj(const HeapWord* addr) const;
213
214 jlong millis_since_last_gc();
215
216 void prepare_for_verify();
217 PSHeapSummary create_ps_heap_summary();
218 virtual void print_on(outputStream* st) const;
219 virtual void print_on_error(outputStream* st) const;
220 virtual void print_gc_threads_on(outputStream* st) const;
221 virtual void gc_threads_do(ThreadClosure* tc) const;
222 virtual void print_tracing_info() const;
223
224 void verify(VerifyOption option /* ignored */);
|