Convert target dcache to type-safe registry API
This changes the target dcache to use the type-safe registry API. gdb/ChangeLog 2019-05-08 Tom Tromey <tom@tromey.com> * target-dcache.c (target_dcache_cleanup): Remove. (target_dcache_aspace_key): Change type. (target_dcache_init_p, target_dcache_invalidate) (target_dcache_get, target_dcache_get_or_init) (_initialize_target_dcache): Update. * dcache.h (struct dcache_deleter): New.
This commit is contained in:
parent
3017b94d60
commit
35632941c9
@ -1,3 +1,12 @@
|
||||
2019-05-08 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* target-dcache.c (target_dcache_cleanup): Remove.
|
||||
(target_dcache_aspace_key): Change type.
|
||||
(target_dcache_init_p, target_dcache_invalidate)
|
||||
(target_dcache_get, target_dcache_get_or_init)
|
||||
(_initialize_target_dcache): Update.
|
||||
* dcache.h (struct dcache_deleter): New.
|
||||
|
||||
2019-05-08 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* symtab.c (struct symbol_cache): Add destructor and
|
||||
|
@ -34,6 +34,15 @@ DCACHE *dcache_init (void);
|
||||
/* Free a DCACHE. */
|
||||
void dcache_free (DCACHE *);
|
||||
|
||||
/* A deletion adapter that calls dcache_free. */
|
||||
struct dcache_deleter
|
||||
{
|
||||
void operator() (DCACHE *d) const
|
||||
{
|
||||
dcache_free (d);
|
||||
}
|
||||
};
|
||||
|
||||
enum target_xfer_status
|
||||
dcache_read_memory_partial (struct target_ops *ops, DCACHE *dcache,
|
||||
CORE_ADDR memaddr, gdb_byte *myaddr,
|
||||
|
@ -23,16 +23,8 @@
|
||||
/* The target dcache is kept per-address-space. This key lets us
|
||||
associate the cache with the address space. */
|
||||
|
||||
static const struct address_space_data *target_dcache_aspace_key;
|
||||
|
||||
/* Clean up dcache, represented by ARG, which is associated with
|
||||
ASPACE. */
|
||||
|
||||
static void
|
||||
target_dcache_cleanup (struct address_space *aspace, void *arg)
|
||||
{
|
||||
dcache_free ((DCACHE *) arg);
|
||||
}
|
||||
static const struct address_space_key<DCACHE, dcache_deleter>
|
||||
target_dcache_aspace_key;
|
||||
|
||||
/* Target dcache is initialized or not. */
|
||||
|
||||
@ -40,8 +32,7 @@ int
|
||||
target_dcache_init_p (void)
|
||||
{
|
||||
DCACHE *dcache
|
||||
= (DCACHE *) address_space_data (current_program_space->aspace,
|
||||
target_dcache_aspace_key);
|
||||
= target_dcache_aspace_key.get (current_program_space->aspace);
|
||||
|
||||
return (dcache != NULL);
|
||||
}
|
||||
@ -52,8 +43,7 @@ void
|
||||
target_dcache_invalidate (void)
|
||||
{
|
||||
DCACHE *dcache
|
||||
= (DCACHE *) address_space_data (current_program_space->aspace,
|
||||
target_dcache_aspace_key);
|
||||
= target_dcache_aspace_key.get (current_program_space->aspace);
|
||||
|
||||
if (dcache != NULL)
|
||||
dcache_invalidate (dcache);
|
||||
@ -65,11 +55,7 @@ target_dcache_invalidate (void)
|
||||
DCACHE *
|
||||
target_dcache_get (void)
|
||||
{
|
||||
DCACHE *dcache
|
||||
= (DCACHE *) address_space_data (current_program_space->aspace,
|
||||
target_dcache_aspace_key);
|
||||
|
||||
return dcache;
|
||||
return target_dcache_aspace_key.get (current_program_space->aspace);
|
||||
}
|
||||
|
||||
/* Return the target dcache. If it is not initialized yet, initialize
|
||||
@ -79,14 +65,12 @@ DCACHE *
|
||||
target_dcache_get_or_init (void)
|
||||
{
|
||||
DCACHE *dcache
|
||||
= (DCACHE *) address_space_data (current_program_space->aspace,
|
||||
target_dcache_aspace_key);
|
||||
= target_dcache_aspace_key.get (current_program_space->aspace);
|
||||
|
||||
if (dcache == NULL)
|
||||
{
|
||||
dcache = dcache_init ();
|
||||
set_address_space_data (current_program_space->aspace,
|
||||
target_dcache_aspace_key, dcache);
|
||||
target_dcache_aspace_key.set (current_program_space->aspace, dcache);
|
||||
}
|
||||
|
||||
return dcache;
|
||||
@ -193,8 +177,4 @@ access is on."),
|
||||
set_code_cache,
|
||||
show_code_cache,
|
||||
&setlist, &showlist);
|
||||
|
||||
target_dcache_aspace_key
|
||||
= register_address_space_data_with_cleanup (NULL,
|
||||
target_dcache_cleanup);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user