src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.hpp
changeset 54058 be40860e8227
parent 53244 9807daeb47c4
child 54103 8b61a38be0c5
equal deleted inserted replaced
54057:687e10fefa11 54058:be40860e8227
     1 /*
     1 /*
     2  * Copyright (c) 2015, 2018, Red Hat, Inc. All rights reserved.
     2  * Copyright (c) 2015, 2019, Red Hat, Inc. All rights reserved.
     3  *
     3  *
     4  * This code is free software; you can redistribute it and/or modify it
     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
     5  * under the terms of the GNU General Public License version 2 only, as
     6  * published by the Free Software Foundation.
     6  * published by the Free Software Foundation.
     7  *
     7  *
    28 #include "gc/shared/oopStorageParState.hpp"
    28 #include "gc/shared/oopStorageParState.hpp"
    29 #include "gc/shenandoah/shenandoahCodeRoots.hpp"
    29 #include "gc/shenandoah/shenandoahCodeRoots.hpp"
    30 #include "gc/shenandoah/shenandoahHeap.hpp"
    30 #include "gc/shenandoah/shenandoahHeap.hpp"
    31 #include "gc/shenandoah/shenandoahPhaseTimings.hpp"
    31 #include "gc/shenandoah/shenandoahPhaseTimings.hpp"
    32 #include "gc/shared/strongRootsScope.hpp"
    32 #include "gc/shared/strongRootsScope.hpp"
       
    33 #include "gc/shared/weakProcessor.hpp"
    33 #include "gc/shared/workgroup.hpp"
    34 #include "gc/shared/workgroup.hpp"
    34 #include "memory/allocation.hpp"
    35 #include "memory/allocation.hpp"
    35 #include "memory/iterator.hpp"
    36 #include "memory/iterator.hpp"
    36 
    37 
    37 class ParallelCLDRootIterator {
    38 class ParallelCLDRootIterator {
    41 };
    42 };
    42 
    43 
    43 enum Shenandoah_process_roots_tasks {
    44 enum Shenandoah_process_roots_tasks {
    44   SHENANDOAH_RP_PS_Universe_oops_do,
    45   SHENANDOAH_RP_PS_Universe_oops_do,
    45   SHENANDOAH_RP_PS_JNIHandles_oops_do,
    46   SHENANDOAH_RP_PS_JNIHandles_oops_do,
    46   SHENANDOAH_RP_PS_JNIHandles_weak_oops_do,
       
    47   SHENANDOAH_RP_PS_ObjectSynchronizer_oops_do,
    47   SHENANDOAH_RP_PS_ObjectSynchronizer_oops_do,
    48   SHENANDOAH_RP_PS_Management_oops_do,
    48   SHENANDOAH_RP_PS_Management_oops_do,
    49   SHENANDOAH_RP_PS_SystemDictionary_oops_do,
    49   SHENANDOAH_RP_PS_SystemDictionary_oops_do,
    50   SHENANDOAH_RP_PS_jvmti_oops_do,
    50   SHENANDOAH_RP_PS_jvmti_oops_do,
    51   // Leave this one last.
    51   // Leave this one last.
    58   OopStorage::ParState<false, false> _par_state_string;
    58   OopStorage::ParState<false, false> _par_state_string;
    59   ShenandoahPhaseTimings::Phase _phase;
    59   ShenandoahPhaseTimings::Phase _phase;
    60   ParallelCLDRootIterator   _cld_iterator;
    60   ParallelCLDRootIterator   _cld_iterator;
    61   ShenandoahAllCodeRootsIterator _coderoots_all_iterator;
    61   ShenandoahAllCodeRootsIterator _coderoots_all_iterator;
    62   CodeBlobClosure* _threads_nmethods_cl;
    62   CodeBlobClosure* _threads_nmethods_cl;
       
    63   WeakProcessor::Task _weak_processor_task;
    63 
    64 
    64   void process_java_roots(OopClosure* scan_non_heap_roots,
    65   void process_java_roots(OopClosure* scan_non_heap_roots,
    65                           CLDClosure* scan_strong_clds,
    66                           CLDClosure* scan_strong_clds,
    66                           CLDClosure* scan_weak_clds,
    67                           CLDClosure* scan_weak_clds,
    67                           CodeBlobClosure* scan_strong_code,
    68                           CodeBlobClosure* scan_strong_code,