@@ -21,7 +21,7 @@
/* See cooked-index-worker.h. */
-cooked_index_storage::cooked_index_storage ()
+cooked_index_ephemeral::cooked_index_ephemeral ()
: m_shard (new cooked_index_shard)
{
}
@@ -29,7 +29,7 @@ cooked_index_storage::cooked_index_storage ()
/* See cooked-index-worker.h. */
cutu_reader *
-cooked_index_storage::get_reader (dwarf2_per_cu *per_cu)
+cooked_index_ephemeral::get_reader (dwarf2_per_cu *per_cu)
{
auto it = m_reader_hash.find (*per_cu);
return it != m_reader_hash.end () ? it->get () : nullptr;
@@ -38,7 +38,7 @@ cooked_index_storage::get_reader (dwarf2_per_cu *per_cu)
/* See cooked-index-worker.h. */
cutu_reader *
-cooked_index_storage::preserve (cutu_reader_up reader)
+cooked_index_ephemeral::preserve (cutu_reader_up reader)
{
m_abbrev_table_cache.add (reader->release_abbrev_table ());
@@ -51,7 +51,7 @@ cooked_index_storage::preserve (cutu_reader_up reader)
/* See cooked-index-worker.h. */
std::uint64_t
-cooked_index_storage::cutu_reader_hash::operator()
+cooked_index_ephemeral::cutu_reader_hash::operator()
(const cutu_reader_up &reader) const noexcept
{
return (*this) (*reader->cu ()->per_cu);
@@ -60,7 +60,7 @@ cooked_index_storage::cutu_reader_hash::operator()
/* See cooked-index-worker.h. */
std::uint64_t
-cooked_index_storage::cutu_reader_hash::operator() (const dwarf2_per_cu &per_cu)
+cooked_index_ephemeral::cutu_reader_hash::operator() (const dwarf2_per_cu &per_cu)
const noexcept
{
return per_cu.index;
@@ -69,7 +69,7 @@ cooked_index_storage::cutu_reader_hash::operator() (const dwarf2_per_cu &per_cu)
/* See cooked-index-worker.h. */
bool
-cooked_index_storage::cutu_reader_eq::operator() (const cutu_reader_up &a,
+cooked_index_ephemeral::cutu_reader_eq::operator() (const cutu_reader_up &a,
const cutu_reader_up &b) const noexcept
{
return (*this) (*a->cu ()->per_cu, b);
@@ -77,7 +77,7 @@ cooked_index_storage::cutu_reader_eq::operator() (const cutu_reader_up &a,
/* See cooked-index-worker.h. */
-bool cooked_index_storage::cutu_reader_eq::operator()
+bool cooked_index_ephemeral::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;
@@ -30,14 +30,18 @@ struct dwarf2_per_cu;
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 called "ephemeral" because it is used
+ to store results while working -- 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 ephemeral objects are destroyed. */
-class cooked_index_storage
+class cooked_index_ephemeral
{
public:
- cooked_index_storage ();
- DISABLE_COPY_AND_ASSIGN (cooked_index_storage);
+ cooked_index_ephemeral ();
+ DISABLE_COPY_AND_ASSIGN (cooked_index_ephemeral);
/* Return the current abbrev table_cache. */
const abbrev_table_cache &get_abbrev_table_cache () const
@@ -23,7 +23,7 @@
/* See cooked-indexer.h. */
-cooked_indexer::cooked_indexer (cooked_index_storage *storage,
+cooked_indexer::cooked_indexer (cooked_index_ephemeral *storage,
dwarf2_per_cu *per_cu, enum language language)
: m_index_storage (storage),
m_per_cu (per_cu),
@@ -26,7 +26,7 @@
#include <variant>
struct abbrev_info;
-struct cooked_index_storage;
+struct cooked_index_ephemeral;
struct cutu_reader;
struct dwarf2_per_cu;
struct dwarf2_per_objfile;
@@ -36,7 +36,7 @@ struct dwarf2_per_objfile;
class cooked_indexer
{
public:
- cooked_indexer (cooked_index_storage *storage, dwarf2_per_cu *per_cu,
+ cooked_indexer (cooked_index_ephemeral *storage, dwarf2_per_cu *per_cu,
enum language language);
DISABLE_COPY_AND_ASSIGN (cooked_indexer);
@@ -103,7 +103,7 @@ class cooked_indexer
bool fully);
/* The storage object, where the results are kept. */
- cooked_index_storage *m_index_storage;
+ cooked_index_ephemeral *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
@@ -728,7 +728,7 @@ show_dwarf_synchronous (struct ui_file *file, int from_tty,
/* local function prototypes */
static void build_type_psymtabs_reader (cutu_reader *reader,
- cooked_index_storage *storage);
+ cooked_index_ephemeral *storage);
static void var_decode_location (struct attribute *attr,
struct symbol *sym,
@@ -3295,7 +3295,7 @@ get_type_unit_group_key (struct dwarf2_cu *cu, const struct attribute *stmt_list
static void
process_psymtab_comp_unit (dwarf2_per_cu *this_cu,
dwarf2_per_objfile *per_objfile,
- cooked_index_storage *storage)
+ cooked_index_ephemeral *storage)
{
cutu_reader *reader = storage->get_reader (this_cu);
if (reader == nullptr)
@@ -3332,7 +3332,7 @@ process_psymtab_comp_unit (dwarf2_per_cu *this_cu,
static void
build_type_psymtabs_reader (cutu_reader *reader,
- cooked_index_storage *storage)
+ cooked_index_ephemeral *storage)
{
struct dwarf2_cu *cu = reader->cu ();
dwarf2_per_cu *per_cu = cu->per_cu;
@@ -3385,7 +3385,7 @@ struct tu_abbrev_offset
static void
build_type_psymtabs (dwarf2_per_objfile *per_objfile,
- cooked_index_storage *storage)
+ cooked_index_ephemeral *storage)
{
struct tu_stats *tu_stats = &per_objfile->per_bfd->tu_stats;
abbrev_table_up abbrev_table;
@@ -3482,7 +3482,7 @@ print_tu_stats (dwarf2_per_objfile *per_objfile)
static void
process_skeletonless_type_unit (dwo_unit *dwo_unit,
dwarf2_per_objfile *per_objfile,
- cooked_index_storage *storage)
+ cooked_index_ephemeral *storage)
{
dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
@@ -3513,7 +3513,7 @@ process_skeletonless_type_unit (dwo_unit *dwo_unit,
static void
process_skeletonless_type_units (dwarf2_per_objfile *per_objfile,
- cooked_index_storage *storage)
+ cooked_index_ephemeral *storage)
{
/* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
if (get_dwp_file (per_objfile) == nullptr)
@@ -3573,7 +3573,7 @@ class cooked_index_worker_debug_info : public cooked_index_worker
/* 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_ephemeral m_index_storage;
};
void
@@ -3586,7 +3586,7 @@ cooked_index_worker_debug_info::process_cus (size_t task_number, unit_iterator f
complaint_interceptor complaint_handler;
std::vector<gdb_exception> errors;
- cooked_index_storage thread_storage;
+ cooked_index_ephemeral thread_storage;
for (auto inner = first; inner != end; ++inner)
{
dwarf2_per_cu *per_cu = inner->get ();