From: Bryce McKinlay Date: Wed, 13 Sep 2000 06:36:25 +0000 (+0000) Subject: String.java (CASE_INSENSITIVE_ORDER): New static field. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0f94c029e96443582656f791f4f29fb353f75897;p=platform%2Fupstream%2Fgcc.git String.java (CASE_INSENSITIVE_ORDER): New static field. 2000-09-13 Bryce McKinlay * java/lang/String.java (CASE_INSENSITIVE_ORDER): New static field. Initialize with anonymous class. (compareToIgnoreCase): New method. * java/lang/ThreadGroup.java (had_uncaught_exception): New field. (uncaughtException): Set had_uncaught_exception. * prims.cc (JvRunMain): Check value of had_uncaught_exception and exit with error status if set. (_Jv_RunMain): Ditto. From-SVN: r36385 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 4b7e06b..fb5bdd8 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,15 @@ +2000-09-13 Bryce McKinlay + + * java/lang/String.java (CASE_INSENSITIVE_ORDER): New static field. + Initialize with anonymous class. + (compareToIgnoreCase): New method. + + * java/lang/ThreadGroup.java (had_uncaught_exception): New field. + (uncaughtException): Set had_uncaught_exception. + * prims.cc (JvRunMain): Check value of had_uncaught_exception and + exit with error status if set. + (_Jv_RunMain): Ditto. + 2000-09-12 Alexandre Oliva * configure: Rebuilt with new ../libtool.m4. diff --git a/libjava/java/lang/String.java b/libjava/java/lang/String.java index 9937374..bc21afd 100644 --- a/libjava/java/lang/String.java +++ b/libjava/java/lang/String.java @@ -10,6 +10,7 @@ package java.lang; import java.io.UnsupportedEncodingException; import java.io.Serializable; import java.lang.Comparable; +import java.util.Comparator; /** * @author Per Bothner @@ -17,7 +18,7 @@ import java.lang.Comparable; */ /* Written using "Java Class Libraries", 2nd edition, plus online * API docs for JDK 1.2 beta from http://www.javasoft.com. - * Status: Complete to 1.1, but see FIXMEs. Also see testsuite results. + * Status: Complete to 1.3. */ public final class String implements Serializable, Comparable @@ -30,6 +31,14 @@ public final class String implements Serializable, Comparable // but it will avoid showing up as a discrepancy when comparing SUIDs. private static final long serialVersionUID = -6849794470754667710L; + static Comparator CASE_INSENSITIVE_ORDER = new Comparator() + { + public int compare (Object o1, Object o2) + { + return ((String) o1).compareToIgnoreCase ((String) o2); + } + }; + public String () { init(); @@ -182,6 +191,12 @@ public final class String implements Serializable, Comparable { return compareTo ((String)obj); } + + public int compareToIgnoreCase (String str) + { + return this.toUpperCase().toLowerCase().compareTo( + str.toUpperCase().toLowerCase()); + } public native boolean regionMatches (int toffset, String other, int ooffset, int len); diff --git a/libjava/java/lang/ThreadGroup.java b/libjava/java/lang/ThreadGroup.java index f566e10..52c6952 100644 --- a/libjava/java/lang/ThreadGroup.java +++ b/libjava/java/lang/ThreadGroup.java @@ -53,6 +53,9 @@ public class ThreadGroup { /* The Initial, top-level ThreadGroup. */ static ThreadGroup root = new ThreadGroup(); + /* This flag is set if an uncaught exception occurs. The runtime should + check this and exit with an error status if it is set. */ + static boolean had_uncaught_exception = false; private ThreadGroup parent; private String name; @@ -496,7 +499,10 @@ public class ThreadGroup if (parent != null) parent.uncaughtException (thread, t); else if (! (t instanceof ThreadDeath)) - t.printStackTrace(); + { + t.printStackTrace(); + had_uncaught_exception = true; + } } /** Tell the VM whether it may suspend Threads in low memory diff --git a/libjava/prims.cc b/libjava/prims.cc index 7766f66..92e4496 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -888,7 +888,9 @@ JvRunMain (jclass klass, int argc, const char **argv) main_thread->start(); _Jv_ThreadWait (); - java::lang::Runtime::getRuntime ()->exit (0); + int status = (int) java::lang::ThreadGroup::had_uncaught_exception; + + java::lang::Runtime::getRuntime ()->exit (status); } void @@ -939,8 +941,10 @@ _Jv_RunMain (const char *name, int argc, const char **argv, bool is_jar) main_thread->start(); _Jv_ThreadWait (); } - - java::lang::Runtime::getRuntime ()->exit (0); + + int status = (int) java::lang::ThreadGroup::had_uncaught_exception; + + java::lang::Runtime::getRuntime ()->exit (status); }