Backport 6633613: (str) StringCoding optimizations to avoid unnecessary array copies with Charset arg

Martin Buchholz martinrb at google.com
Fri Aug 13 10:25:18 PDT 2010


Someone at Google ran into 6633613, and I thought it would be good to
backport this small safe fix to openjdk6.

Martin

# HG changeset patch
# User martin
# Date 1205125002 25200
# Node ID 7fb2ca1b52c8f73a6f65bc51df55cd946b174ce7
# Parent  b5da6145b050847df7aab8b5696b1d972a14c5ae
6633613: (str) StringCoding optimizations to avoid unnecessary array copies
with Charset arg
Reviewed-by: iris

diff --git a/src/share/classes/java/lang/StringCoding.java
b/src/share/classes/java/lang/StringCoding.java
--- a/src/share/classes/java/lang/StringCoding.java
+++ b/src/share/classes/java/lang/StringCoding.java
@@ -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) {
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/jdk6-dev/attachments/20100813/0695cc29/attachment.html 


More information about the jdk6-dev mailing list