comparison src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp @ 4909:95f6641e38e0

7144296: PS: Optimize nmethods processing Summary: Prunes scavenge roots in code list every young GC, promote objects directly pointed by the code immediately Reviewed-by: johnc, jcoomes
author iveresov
date Fri, 10 Feb 2012 17:40:20 -0800
parents f95d63e2154a
children ab4422d0ed59
comparison
equal deleted inserted replaced
4888:3c4621be5149 4909:95f6641e38e0
1 /* 1 /*
2 * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
133 // argument is a convenience wrapper that fetches the to_space pointer from 133 // argument is a convenience wrapper that fetches the to_space pointer from
134 // the heap and calls the other version (if the arg is true). 134 // the heap and calls the other version (if the arg is true).
135 template <class T> static inline bool should_scavenge(T* p, MutableSpace* to_space); 135 template <class T> static inline bool should_scavenge(T* p, MutableSpace* to_space);
136 template <class T> static inline bool should_scavenge(T* p, bool check_to_space); 136 template <class T> static inline bool should_scavenge(T* p, bool check_to_space);
137 137
138 template <class T> inline static void copy_and_push_safe_barrier(PSPromotionManager* pm, T* p); 138 template <class T, bool promote_immediately>
139 inline static void copy_and_push_safe_barrier(PSPromotionManager* pm, T* p);
139 140
140 // Is an object in the young generation 141 // Is an object in the young generation
141 // This assumes that the HeapWord argument is in the heap, 142 // This assumes that the HeapWord argument is in the heap,
142 // so it only checks one side of the complete predicate. 143 // so it only checks one side of the complete predicate.
143 inline static bool is_obj_in_young(HeapWord* o) { 144 inline static bool is_obj_in_young(HeapWord* o) {