Remove use of UnsafeByteSequence.

We get most of the way there with BAOS in this use case,
except that we pay for additional locking and a call to
Charsets.forName.

JarFileBenchmark results :

AFTER
0% filename=/system/framework/bouncycastle.jar 989706.59 ns; stddev=28699.19 ns @ 10 trials
33% filename=/system/framework/core.jar 1115640.38 ns; stddev=13687.70 ns @ 10 trials
67% filename=/system/framework/framework.jar 1027097.16 ns; stddev=33908.38 ns @ 10 trials

BEFORE
0% filename=/system/framework/bouncycastle.jar 1016998.68 ns; sttdev=9393.46 ns @ 3 trials
33% filename=/system/framework/core.jar 1163348.29 ns; sttdev=42646.58 ns @ 10 trials
67% filename=/system/framework/framework.jar 1042157.91 ns; sttdev=32679.86 ns @ 10 trials

(Cherry picked from b7d186b5f0d2a6406146ad1f366642d86f5e6933)

Bug: b/11411129
Change-Id: Ib94789fb8396b4f2aad31cc8232b6f0bb0672238
diff --git a/luni/src/main/java/java/util/jar/ManifestReader.java b/luni/src/main/java/java/util/jar/ManifestReader.java
index 2faaa90..8760884 100644
--- a/luni/src/main/java/java/util/jar/ManifestReader.java
+++ b/luni/src/main/java/java/util/jar/ManifestReader.java
@@ -17,6 +17,7 @@
 
 package java.util.jar;
 
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
@@ -31,7 +32,7 @@
     // but a manifest might have thousands of entries.
     private final HashMap<String, Attributes.Name> attributeNameCache = new HashMap<String, Attributes.Name>();
 
-    private final UnsafeByteSequence valueBuffer = new UnsafeByteSequence(80);
+    private final ByteArrayOutputStream valueBuffer = new ByteArrayOutputStream(80);
 
     private final byte[] buf;
 
@@ -141,7 +142,7 @@
         boolean lastCr = false;
         int mark = pos;
         int last = pos;
-        valueBuffer.rewind();
+        valueBuffer.reset();
         while (pos < buf.length) {
             byte next = buf[pos++];
             switch (next) {
@@ -175,6 +176,8 @@
         }
 
         valueBuffer.write(buf, mark, last - mark);
-        value = valueBuffer.toString(StandardCharsets.UTF_8);
+        // A bit frustrating that that Charset.forName will be called
+        // again.
+        value = valueBuffer.toString(StandardCharsets.UTF_8.name());
     }
 }