/* See cooked-index-worker.h. */
-cooked_index_storage::cooked_index_storage ()
+cooked_index_worker_result::cooked_index_worker_result ()
: m_shard (new cooked_index_shard)
{
}
/* See cooked-index-worker.h. */
cutu_reader *
-cooked_index_storage::get_reader (dwarf2_per_cu *per_cu)
+cooked_index_worker_result::get_reader (dwarf2_per_cu *per_cu)
{
auto it = m_reader_hash.find (*per_cu);
return it != m_reader_hash.end () ? it->get () : nullptr;
/* See cooked-index-worker.h. */
cutu_reader *
-cooked_index_storage::preserve (cutu_reader_up reader)
+cooked_index_worker_result::preserve (cutu_reader_up reader)
{
m_abbrev_table_cache.add (reader->release_abbrev_table ());
/* See cooked-index-worker.h. */
std::uint64_t
-cooked_index_storage::cutu_reader_hash::operator()
+cooked_index_worker_result::cutu_reader_hash::operator()
(const cutu_reader_up &reader) const noexcept
{
return (*this) (*reader->cu ()->per_cu);
/* See cooked-index-worker.h. */
std::uint64_t
-cooked_index_storage::cutu_reader_hash::operator() (const dwarf2_per_cu &per_cu)
+cooked_index_worker_result::cutu_reader_hash::operator() (const dwarf2_per_cu &per_cu)
const noexcept
{
return per_cu.index;
/* See cooked-index-worker.h. */
bool
-cooked_index_storage::cutu_reader_eq::operator() (const cutu_reader_up &a,
+cooked_index_worker_result::cutu_reader_eq::operator() (const cutu_reader_up &a,
const cutu_reader_up &b) const noexcept
{
return (*this) (*a->cu ()->per_cu, b);
/* See cooked-index-worker.h. */
-bool cooked_index_storage::cutu_reader_eq::operator()
+bool cooked_index_worker_result::cutu_reader_eq::operator()
(const dwarf2_per_cu &per_cu, const cutu_reader_up &reader) const noexcept
{
return per_cu.index == reader->cu ()->per_cu->index;
using cutu_reader_up = std::unique_ptr<cutu_reader>;
/* An instance of this is created when scanning DWARF to create a
- cooked index. */
+ cooked index. This class is the result of a single task to store
+ results while working -- that is, it is an implementation detail of
+ the threads managed by cooked_index_worker. Once scanning is done,
+ selected parts of the state here are stored into the shard, and
+ then these temporary objects are destroyed. */
-class cooked_index_storage
+class cooked_index_worker_result
{
public:
- cooked_index_storage ();
- DISABLE_COPY_AND_ASSIGN (cooked_index_storage);
+ cooked_index_worker_result ();
+ DISABLE_COPY_AND_ASSIGN (cooked_index_worker_result);
/* Return the current abbrev table_cache. */
const abbrev_table_cache &get_abbrev_table_cache () const
/* See cooked-indexer.h. */
-cooked_indexer::cooked_indexer (cooked_index_storage *storage,
+cooked_indexer::cooked_indexer (cooked_index_worker_result *storage,
dwarf2_per_cu *per_cu, enum language language)
: m_index_storage (storage),
m_per_cu (per_cu),
#include <variant>
struct abbrev_info;
-struct cooked_index_storage;
+struct cooked_index_worker_result;
struct cutu_reader;
struct dwarf2_per_cu;
struct dwarf2_per_objfile;
class cooked_indexer
{
public:
- cooked_indexer (cooked_index_storage *storage, dwarf2_per_cu *per_cu,
+ cooked_indexer (cooked_index_worker_result *storage, dwarf2_per_cu *per_cu,
enum language language);
DISABLE_COPY_AND_ASSIGN (cooked_indexer);
bool fully);
/* The storage object, where the results are kept. */
- cooked_index_storage *m_index_storage;
+ cooked_index_worker_result *m_index_storage;
/* The CU that we are reading on behalf of. This object might be
asked to index one CU but to treat the results as if they come
from some including CU; in this case the including CU would be
/* local function prototypes */
static void build_type_psymtabs_reader (cutu_reader *reader,
- cooked_index_storage *storage);
+ cooked_index_worker_result *storage);
static void var_decode_location (struct attribute *attr,
struct symbol *sym,
static void
process_psymtab_comp_unit (dwarf2_per_cu *this_cu,
dwarf2_per_objfile *per_objfile,
- cooked_index_storage *storage)
+ cooked_index_worker_result *storage)
{
cutu_reader *reader = storage->get_reader (this_cu);
if (reader == nullptr)
static void
build_type_psymtabs_reader (cutu_reader *reader,
- cooked_index_storage *storage)
+ cooked_index_worker_result *storage)
{
struct dwarf2_cu *cu = reader->cu ();
dwarf2_per_cu *per_cu = cu->per_cu;
static void
build_type_psymtabs (dwarf2_per_objfile *per_objfile,
- cooked_index_storage *storage)
+ cooked_index_worker_result *storage)
{
struct tu_stats *tu_stats = &per_objfile->per_bfd->tu_stats;
abbrev_table_up abbrev_table;
static void
process_skeletonless_type_unit (dwo_unit *dwo_unit,
dwarf2_per_objfile *per_objfile,
- cooked_index_storage *storage)
+ cooked_index_worker_result *storage)
{
dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
static void
process_skeletonless_type_units (dwarf2_per_objfile *per_objfile,
- cooked_index_storage *storage)
+ cooked_index_worker_result *storage)
{
/* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
if (get_dwp_file (per_objfile) == nullptr)
/* A storage object for "leftovers" -- see the 'start' method, but
essentially things not parsed during the normal CU parsing
passes. */
- cooked_index_storage m_index_storage;
+ cooked_index_worker_result m_index_storage;
};
void
complaint_interceptor complaint_handler;
std::vector<gdb_exception> errors;
- cooked_index_storage thread_storage;
+ cooked_index_worker_result thread_storage;
for (auto inner = first; inner != end; ++inner)
{
dwarf2_per_cu *per_cu = inner->get ();