On Fri, Nov 19, 1999 at 04:10:17PM -0500, Mark-Jason Dominus wrote: > > > > - (s = rx->startp[paren]) != -1 && > > > - (t = rx->endp[paren]) != -1) > > > + (s = get_match_node(rx)->startp[paren]) != -1 && > > > + (t = get_match_node(rx)->endp[paren]) != -1) > > > > Nope. You do not want to make function calls in this tight code. > > It is not a function call. It is a compile-time macro: > > > > +#ifdef USE_THREADS > > > +# define get_match_node(regexp) (&(PL_matchvars[regexp->regexp_index])) > > > +#else > > > +# define get_match_node(regexp) (regexp) > > > +#endif This is even much worse. How regexp_index is assigned? Is it just incrementing? And still it is many more dereferences than what is needed. IlyaThread Previous | Thread Next