Revamp ibcmp_utf8 for performance and clarity
authorKarl Williamson <khw@khw-desktop.(none)>
Tue, 25 May 2010 17:18:42 +0000 (11:18 -0600)
committerYves Orton <demerphq@gmail.com>
Sat, 5 Jun 2010 21:23:58 +0000 (23:23 +0200)
commit8b35872c947d4c76532f1e4874411afa9125575d
treed739be496ba06920a8535fa34d10d49737c524d9
parent970ea3cb860f5a38a7f7582cc02c1b88c0bf4b0f
Revamp ibcmp_utf8 for performance and clarity

I had a hard time understanding how this routine worked; there were no
comments.  In figuring it out, I discovered it could be made more
efficient.  This routine is called over and over in the innermost loops
in regex matching, so efficiency is a concern.

Setup is done once before the main while loop so that it now has two
conditions instead of eight.  The loop was rearranged slightly to be
smaller and a couple of unneeded assignments to temporaries were
removed, and recomputation of some values was avoided.  Several other
small efficiency changes were made.

Several asserts had been commented out, saying that they make tests
fail.  But they no longer do, at least on my platform.  There was a
reason that they were asserts to begin with, and that is they denoted an
insane or trivial condition.  Apparently there have been fixes to the
other code calling this, so I re-enabled them.

The names of several variables were changed to be less confusing; hence
f1 means the fold buffer for string 1 whereas it used to mean its goal,
which is now g1.

The leading indent was changed from 5 to 4 blanks.  I made enough
other changes that I didn't submit this as a separate commit
utf8.c