1.1 --- a/src/share/vm/gc_implementation/g1/heapRegion.hpp Thu Aug 15 10:05:50 2013 +0200 1.2 +++ b/src/share/vm/gc_implementation/g1/heapRegion.hpp Thu Aug 15 10:52:18 2013 +0200 1.3 @@ -52,6 +52,7 @@ 1.4 class HeapRegionRemSetIterator; 1.5 class HeapRegion; 1.6 class HeapRegionSetBase; 1.7 +class nmethod; 1.8 1.9 #define HR_FORMAT "%u:(%s)["PTR_FORMAT","PTR_FORMAT","PTR_FORMAT"]" 1.10 #define HR_FORMAT_PARAMS(_hr_) \ 1.11 @@ -371,7 +372,8 @@ 1.12 RebuildRSClaimValue = 5, 1.13 ParEvacFailureClaimValue = 6, 1.14 AggregateCountClaimValue = 7, 1.15 - VerifyCountClaimValue = 8 1.16 + VerifyCountClaimValue = 8, 1.17 + ParMarkRootClaimValue = 9 1.18 }; 1.19 1.20 inline HeapWord* par_allocate_no_bot_updates(size_t word_size) { 1.21 @@ -796,6 +798,25 @@ 1.22 1.23 virtual void reset_after_compaction(); 1.24 1.25 + // Routines for managing a list of code roots (attached to the 1.26 + // this region's RSet) that point into this heap region. 1.27 + void add_strong_code_root(nmethod* nm); 1.28 + void remove_strong_code_root(nmethod* nm); 1.29 + 1.30 + // During a collection, migrate the successfully evacuated 1.31 + // strong code roots that referenced into this region to the 1.32 + // new regions that they now point into. Unsuccessfully 1.33 + // evacuated code roots are not migrated. 1.34 + void migrate_strong_code_roots(); 1.35 + 1.36 + // Applies blk->do_code_blob() to each of the entries in 1.37 + // the strong code roots list for this region 1.38 + void strong_code_roots_do(CodeBlobClosure* blk) const; 1.39 + 1.40 + // Verify that the entries on the strong code root list for this 1.41 + // region are live and include at least one pointer into this region. 1.42 + void verify_strong_code_roots(VerifyOption vo, bool* failures) const; 1.43 + 1.44 void print() const; 1.45 void print_on(outputStream* st) const; 1.46