879 _workers = new WorkGang("OopStorageTestParIteration workers", 880 _max_workers, 881 false, 882 false); 883 _workers->initialize_workers(); 884 _workers->update_active_workers(_max_workers); 885 } 886 return _workers; 887 } 888 889 template<bool concurrent, bool is_const> 890 class OopStorageTestParIteration::Task : public AbstractGangTask { 891 typedef OopStorage::ParState<concurrent, is_const> StateType; 892 893 typedef typename Conditional<is_const, 894 const OopStorage, 895 OopStorage>::type Storage; 896 897 public: 898 Task(const char* name, Storage* storage, VerifyState* vstate) : 899 AbstractGangTask(name, GCId::undefined()), 900 _state(storage), 901 _vstate(vstate) 902 {} 903 904 virtual void work(uint worker_id) { 905 VerifyFn verifier(_vstate, worker_id); 906 _state.iterate(verifier); 907 } 908 909 private: 910 StateType _state; 911 VerifyState* _vstate; 912 }; 913 914 template<bool concurrent, bool is_const> 915 class OopStorageTestParIteration::TaskUsingOopsDo : public AbstractGangTask { 916 public: 917 TaskUsingOopsDo(const char* name, OopStorage* storage, VerifyState* vstate) : 918 AbstractGangTask(name, GCId::undefined()), 919 _state(storage), 920 _vstate(vstate) 921 {} 922 923 virtual void work(uint worker_id) { 924 VerifyClosure verifier(_vstate, worker_id); 925 _state.oops_do(&verifier); 926 } 927 928 private: 929 OopStorage::ParState<concurrent, is_const> _state; 930 VerifyState* _vstate; 931 }; 932 933 class OopStorageTestParIteration::VM_ParStateVerify : public VM_GTestExecuteAtSafepoint { 934 public: 935 VM_ParStateVerify(WorkGang* workers, AbstractGangTask* task) : 936 _workers(workers), _task(task) 937 {} 938 | 879 _workers = new WorkGang("OopStorageTestParIteration workers", 880 _max_workers, 881 false, 882 false); 883 _workers->initialize_workers(); 884 _workers->update_active_workers(_max_workers); 885 } 886 return _workers; 887 } 888 889 template<bool concurrent, bool is_const> 890 class OopStorageTestParIteration::Task : public AbstractGangTask { 891 typedef OopStorage::ParState<concurrent, is_const> StateType; 892 893 typedef typename Conditional<is_const, 894 const OopStorage, 895 OopStorage>::type Storage; 896 897 public: 898 Task(const char* name, Storage* storage, VerifyState* vstate) : 899 AbstractGangTask(name), 900 _state(storage), 901 _vstate(vstate) 902 {} 903 904 virtual void work(uint worker_id) { 905 VerifyFn verifier(_vstate, worker_id); 906 _state.iterate(verifier); 907 } 908 909 private: 910 StateType _state; 911 VerifyState* _vstate; 912 }; 913 914 template<bool concurrent, bool is_const> 915 class OopStorageTestParIteration::TaskUsingOopsDo : public AbstractGangTask { 916 public: 917 TaskUsingOopsDo(const char* name, OopStorage* storage, VerifyState* vstate) : 918 AbstractGangTask(name), 919 _state(storage), 920 _vstate(vstate) 921 {} 922 923 virtual void work(uint worker_id) { 924 VerifyClosure verifier(_vstate, worker_id); 925 _state.oops_do(&verifier); 926 } 927 928 private: 929 OopStorage::ParState<concurrent, is_const> _state; 930 VerifyState* _vstate; 931 }; 932 933 class OopStorageTestParIteration::VM_ParStateVerify : public VM_GTestExecuteAtSafepoint { 934 public: 935 VM_ParStateVerify(WorkGang* workers, AbstractGangTask* task) : 936 _workers(workers), _task(task) 937 {} 938 |