diff options
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 2 | ||||
-rw-r--r-- | libjava/java/lang/natCharacter.cc | 21 |
2 files changed, 20 insertions, 3 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 09740cd..4066dae 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,7 @@ 1999-05-07 Tom Tromey <tromey@cygnus.com> + * 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 36cf570..fa312d1 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; } |