8227054: ServiceThread needs to know about all OopStorage objects

8227053: ServiceThread cleanup of OopStorage is missing some

OopStorages provides named access and iteration.

Reviewed-by: eosterlund, pliden, coleenp
This commit is contained in:
Kim Barrett 2019-08-21 18:42:30 -04:00
parent de8d01d4d3
commit 1acad37ee6
28 changed files with 721 additions and 358 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -153,6 +153,8 @@ public:
bool concurrent);
~BasicParState();
const OopStorage* storage() const { return _storage; }
template<bool is_const, typename F> void iterate(F f);
static uint default_estimated_thread_count(bool concurrent);
@ -172,6 +174,7 @@ public:
_basic_state(storage, estimated_thread_count, concurrent)
{}
const OopStorage* storage() const { return _basic_state.storage(); }
template<typename F> void iterate(F f);
template<typename Closure> void oops_do(Closure* cl);
};
@ -186,6 +189,7 @@ public:
_basic_state(storage, estimated_thread_count, false)
{}
const OopStorage* storage() const { return _basic_state.storage(); }
template<typename F> void iterate(F f);
template<typename Closure> void oops_do(Closure* cl);
template<typename Closure> void weak_oops_do(Closure* cl);