< prev index next >

src/hotspot/share/gc/parallel/parallelScavengeHeap.hpp

RFE_8195103_reduce_initial_card_marks

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 */);
< prev index next >