String.java (CASE_INSENSITIVE_ORDER): New static field.
authorBryce McKinlay <bryce@albatross.co.nz>
Wed, 13 Sep 2000 06:36:25 +0000 (06:36 +0000)
committerBryce McKinlay <bryce@gcc.gnu.org>
Wed, 13 Sep 2000 06:36:25 +0000 (07:36 +0100)
2000-09-13  Bryce McKinlay  <bryce@albatross.co.nz>

* 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

libjava/ChangeLog
libjava/java/lang/String.java
libjava/java/lang/ThreadGroup.java
libjava/prims.cc

index 4b7e06b..fb5bdd8 100644 (file)
@@ -1,3 +1,15 @@
+2000-09-13  Bryce McKinlay  <bryce@albatross.co.nz>
+
+       * 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  <aoliva@redhat.com>
 
        * configure: Rebuilt with new ../libtool.m4.
index 9937374..bc21afd 100644 (file)
@@ -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 <bothner@cygnus.com>
@@ -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);
index f566e10..52c6952 100644 (file)
@@ -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
index 7766f66..92e4496 100644 (file)
@@ -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);
 }
 
 \f