diff -ru CVS/classpath/java/text/Bidi.java updated/classpath/java/text/Bidi.java
--- CVS/classpath/java/text/Bidi.java	2006-11-21 17:34:20.000000000 +0300
+++ updated/classpath/java/text/Bidi.java	2010-03-24 17:50:20.000000000 +0300
@@ -1,5 +1,5 @@
 /* Bidi.java -- Bidirectional Algorithm implementation
-   Copyright (C) 2005, 2006  Free Software Foundation, Inc.
+   Copyright (C) 2005, 2006, 2010  Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -161,7 +161,7 @@
     if (val instanceof NumericShaper)
       shaper = (NumericShaper) val;
 
-    char[] text = new char[iter.getEndIndex() - iter.getBeginIndex()];
+    this.text = new char[iter.getEndIndex() - iter.getBeginIndex()];
     this.embeddings = new byte[this.text.length];
     this.embeddingOffset = 0;
     this.length = text.length;
@@ -983,16 +983,13 @@
   {
     for (int i = start; i < end; i++)
       {
-	byte dir = Character.getDirectionality(text[i]);
-	if (dir != Character.DIRECTIONALITY_LEFT_TO_RIGHT
-	    && dir != Character.DIRECTIONALITY_EUROPEAN_NUMBER
-	    && dir != Character.DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR
-	    && dir != Character.DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR
-	    && dir != Character.DIRECTIONALITY_ARABIC_NUMBER
-	    && dir != Character.DIRECTIONALITY_COMMON_NUMBER_SEPARATOR
-	    && dir != Character.DIRECTIONALITY_SEGMENT_SEPARATOR
-	    && dir != Character.DIRECTIONALITY_WHITESPACE
-            && dir != Character.DIRECTIONALITY_PARAGRAPH_SEPARATOR)
+        char c = text[i];
+        if (c > '\u0590' && ((1 << Character.getDirectionality(c)) &
+            ((1 << Character.DIRECTIONALITY_RIGHT_TO_LEFT) |
+            (1 << Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC) |
+            (1 << Character.DIRECTIONALITY_ARABIC_NUMBER) |
+            (1 << Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING) |
+            (1 << Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE))) != 0)
 	  return true;
       }
 
diff -ru CVS/classpath/java/text/CollationElementIterator.java updated/classpath/java/text/CollationElementIterator.java
--- CVS/classpath/java/text/CollationElementIterator.java	2008-05-07 01:20:40.000000000 +0300
+++ updated/classpath/java/text/CollationElementIterator.java	2010-03-24 17:50:20.000000000 +0300
@@ -1,5 +1,6 @@
 /* CollationElementIterator.java -- Walks through collation elements
-   Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004  Free Software Foundation
+   Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2010
+   Free Software Foundation
 
 This file is part of GNU Classpath.
 
@@ -266,7 +267,7 @@
     this.text = new StringCharacterIterator(text);
     this.index = 0;
 
-    String work_text = text.intern();
+    String work_text = text;
 
     ArrayList a_element = new ArrayList();
     ArrayList a_idx = new ArrayList();
