libctf: add ctf_forwardable_kind
The internals of the deduplicator want to know if something is a type that can have a forward to it fairly often, often enough that inlining it brings a noticeable performance gain. Convert the one place in libctf that can already benefit, even though it doesn't bring any sort of performance gain there. libctf/ * ctf-inlines.h (ctf_forwardable_kind): New. * ctf-create.c (ctf_add_forward): Use it.
This commit is contained in:
parent
2c9ca36be1
commit
9850ce4d7b
3 changed files with 12 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
|||
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
* ctf-inlines.h (ctf_forwardable_kind): New.
|
||||
* ctf-create.c (ctf_add_forward): Use it.
|
||||
|
||||
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
* ctf-impl.h (ctf_get_ctt_size): Move definition from here...
|
||||
|
|
|
@ -1241,7 +1241,7 @@ ctf_add_forward (ctf_file_t *fp, uint32_t flag, const char *name,
|
|||
ctf_dtdef_t *dtd;
|
||||
ctf_id_t type = 0;
|
||||
|
||||
if (kind != CTF_K_STRUCT && kind != CTF_K_UNION && kind != CTF_K_ENUM)
|
||||
if (!ctf_forwardable_kind (kind))
|
||||
return (ctf_set_errno (fp, ECTF_NOTSUE));
|
||||
|
||||
/* If the type is already defined or exists as a forward tag, just
|
||||
|
|
|
@ -40,6 +40,12 @@ ctf_get_ctt_size (const ctf_file_t *fp,
|
|||
return (fp->ctf_fileops->ctfo_get_ctt_size (fp, tp, sizep, incrementp));
|
||||
}
|
||||
|
||||
static inline int
|
||||
ctf_forwardable_kind (int kind)
|
||||
{
|
||||
return (kind == CTF_K_STRUCT || kind == CTF_K_UNION || kind == CTF_K_ENUM);
|
||||
}
|
||||
|
||||
|
||||
static inline int
|
||||
ctf_dynhash_cinsert (ctf_dynhash_t *h, const void *k, const void *v)
|
||||
|
|
Loading…
Add table
Reference in a new issue