6633613: (str) StringCoding optimizations to avoid unnecessary array copies with Charset arg
authormartin
Sun, 09 Mar 2008 21:56:42 -0700
changeset 42 6c846a8c97d3
parent 41 dfebd2609e77
child 43 bfccfd41f0fc
child 52 752ebbd838ad
6633613: (str) StringCoding optimizations to avoid unnecessary array copies with Charset arg Reviewed-by: iris
jdk/src/share/classes/java/lang/StringCoding.java
--- a/jdk/src/share/classes/java/lang/StringCoding.java	Sun Mar 09 21:56:42 2008 -0700
+++ b/jdk/src/share/classes/java/lang/StringCoding.java	Sun Mar 09 21:56:42 2008 -0700
@@ -194,8 +194,7 @@
 
     static char[] decode(Charset cs, byte[] ba, int off, int len) {
         StringDecoder sd = new StringDecoder(cs, cs.name());
-        byte[] b = Arrays.copyOf(ba, ba.length);
-        return sd.decode(b, off, len);
+        return sd.decode(Arrays.copyOfRange(ba, off, off + len), 0, len);
     }
 
     static char[] decode(byte[] ba, int off, int len) {
@@ -293,8 +292,7 @@
 
     static byte[] encode(Charset cs, char[] ca, int off, int len) {
         StringEncoder se = new StringEncoder(cs, cs.name());
-        char[] c = Arrays.copyOf(ca, ca.length);
-        return se.encode(c, off, len);
+        return se.encode(Arrays.copyOfRange(ca, off, off + len), 0, len);
     }
 
     static byte[] encode(char[] ca, int off, int len) {