From c59c5e9a6508d3a72fe058126482083ad2e5ceeb Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 7 May 1999 17:39:52 +0000 Subject: [PATCH] * java/lang/natCharacter.cc (isLowerCase): Use a binary search. From-SVN: r26829 --- libjava/ChangeLog | 2 ++ libjava/java/lang/natCharacter.cc | 21 ++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 09740cdc4c6..4066dae48c5 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,7 @@ 1999-05-07 Tom Tromey + * java/lang/natCharacter.cc (isLowerCase): Use a binary search. + * libtool-version: New file. * Makefile.in: Rebuilt. * Makefile.am (libgcj_la_LDFLAGS): Use -version-info, not diff --git a/libjava/java/lang/natCharacter.cc b/libjava/java/lang/natCharacter.cc index 36cf5700fe5..fa312d1d9a4 100644 --- a/libjava/java/lang/natCharacter.cc +++ b/libjava/java/lang/natCharacter.cc @@ -152,12 +152,27 @@ java::lang::Character::isLowerCase (jchar ch) if (table_search (lower_case_table, asize (lower_case_table), ch) != -1) return true; - // FIXME: use a binary search. - for (unsigned int i = 0; i < asize (lower_anomalous_table); ++i) + int low, high, i, old; + + low = 0; + high = asize (lower_anomalous_table); + i = high / 2; + + while (true) { - if (lower_anomalous_table[i] == ch) + if (ch < lower_anomalous_table[i]) + high = i; + else if (ch > lower_anomalous_table[i]) + low = i; + else return true; + + old = i; + i = (high + low) / 2; + if (i == old) + break; } + return false; }