This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Fri, Feb 21, 2014 at 12:34:50AM -0500, Carlos O'Donell wrote: > On 02/20/2014 11:55 PM, Siddhesh Poyarekar wrote: > >> + if (! __builtin_expect (GL(dl_tls_dtv_gaps), true)) > > > > This should use __glibc_{,un}likely. Also, _dl_tls_next_modid has the > > opposite expectation for the value of dl_tls_dtv_gaps: > > > > if (__builtin_expect (GL(dl_tls_dtv_gaps), false)) > > > > Since we're explicitly specifying the likelihood of the branch, you > > might want to explain why each of those annotations are true, or fix > > the annotation which isn't. > > Good catch. > > The _dl_count_modids annotation is wrong. Having gaps is rare and only > happens during failure conditions. > > v2 > - Use __glibc_likely. > > Comments? Looks OK to me. Siddhesh > > [Difference from v1] > > diff --git a/elf/dl-tls.c b/elf/dl-tls.c > index cbafdd9..ad124b8 100644 > --- a/elf/dl-tls.c > +++ b/elf/dl-tls.c > @@ -109,9 +109,14 @@ size_t > internal_function > _dl_count_modids (void) > { > - if (! __builtin_expect (GL(dl_tls_dtv_gaps), true)) > + /* It is rare that we have gaps; see elf/dl-open.c (_dl_open) where > + we fail to load a module and unload it leaving a gap. If we don't > + have gaps then the number of modids is the current maximum so > + return that. */ > + if (__glibc_likely (!GL(dl_tls_dtv_gaps))) > return GL(dl_tls_max_dtv_idx); > > + /* We have gaps and are forced to count the non-NULL entries. */ > size_t n = 0; > struct dtv_slotinfo_list *runp = GL(dl_tls_dtv_slotinfo_list); > while (runp != NULL) > --- > > Cheers, > Carlos.
Attachment:
pgp0TtIbye528.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |