11/*
2- * Copyright (c) 1994, 2022 , Oracle and/or its affiliates. All rights reserved.
2+ * Copyright (c) 1994, 2023 , Oracle and/or its affiliates. All rights reserved.
33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44 *
55 * This code is free software; you can redistribute it and/or modify it
2525
2626package java .io ;
2727
28+ import jdk .internal .util .ByteArray ;
29+
2830/**
2931 * A data output stream lets an application write primitive Java data
3032 * types to an output stream in a portable way. An application can
@@ -170,8 +172,7 @@ public final void writeByte(int v) throws IOException {
170172 * @see java.io.FilterOutputStream#out
171173 */
172174 public final void writeShort (int v ) throws IOException {
173- writeBuffer [0 ] = (byte )(v >>> 8 );
174- writeBuffer [1 ] = (byte )(v >>> 0 );
175+ ByteArray .setUnsignedShort (writeBuffer , 0 , v );
175176 out .write (writeBuffer , 0 , 2 );
176177 incCount (2 );
177178 }
@@ -186,8 +187,7 @@ public final void writeShort(int v) throws IOException {
186187 * @see java.io.FilterOutputStream#out
187188 */
188189 public final void writeChar (int v ) throws IOException {
189- writeBuffer [0 ] = (byte )(v >>> 8 );
190- writeBuffer [1 ] = (byte )(v >>> 0 );
190+ ByteArray .setUnsignedShort (writeBuffer , 0 , v );
191191 out .write (writeBuffer , 0 , 2 );
192192 incCount (2 );
193193 }
@@ -202,10 +202,7 @@ public final void writeChar(int v) throws IOException {
202202 * @see java.io.FilterOutputStream#out
203203 */
204204 public final void writeInt (int v ) throws IOException {
205- writeBuffer [0 ] = (byte )(v >>> 24 );
206- writeBuffer [1 ] = (byte )(v >>> 16 );
207- writeBuffer [2 ] = (byte )(v >>> 8 );
208- writeBuffer [3 ] = (byte )(v >>> 0 );
205+ ByteArray .setInt (writeBuffer , 0 , v );
209206 out .write (writeBuffer , 0 , 4 );
210207 incCount (4 );
211208 }
@@ -220,14 +217,7 @@ public final void writeInt(int v) throws IOException {
220217 * @see java.io.FilterOutputStream#out
221218 */
222219 public final void writeLong (long v ) throws IOException {
223- writeBuffer [0 ] = (byte )(v >>> 56 );
224- writeBuffer [1 ] = (byte )(v >>> 48 );
225- writeBuffer [2 ] = (byte )(v >>> 40 );
226- writeBuffer [3 ] = (byte )(v >>> 32 );
227- writeBuffer [4 ] = (byte )(v >>> 24 );
228- writeBuffer [5 ] = (byte )(v >>> 16 );
229- writeBuffer [6 ] = (byte )(v >>> 8 );
230- writeBuffer [7 ] = (byte )(v >>> 0 );
220+ ByteArray .setLong (writeBuffer , 0 , v );
231221 out .write (writeBuffer , 0 , 8 );
232222 incCount (8 );
233223 }
@@ -246,7 +236,9 @@ public final void writeLong(long v) throws IOException {
246236 * @see java.lang.Float#floatToIntBits(float)
247237 */
248238 public final void writeFloat (float v ) throws IOException {
249- writeInt (Float .floatToIntBits (v ));
239+ ByteArray .setFloat (writeBuffer , 0 , v );
240+ out .write (writeBuffer , 0 , 4 );
241+ incCount (4 );
250242 }
251243
252244 /**
@@ -263,7 +255,9 @@ public final void writeFloat(float v) throws IOException {
263255 * @see java.lang.Double#doubleToLongBits(double)
264256 */
265257 public final void writeDouble (double v ) throws IOException {
266- writeLong (Double .doubleToLongBits (v ));
258+ ByteArray .setDouble (writeBuffer , 0 , v );
259+ out .write (writeBuffer , 0 , 8 );
260+ incCount (8 );
267261 }
268262
269263 /**
@@ -301,8 +295,7 @@ public final void writeChars(String s) throws IOException {
301295 int len = s .length ();
302296 for (int i = 0 ; i < len ; i ++) {
303297 int v = s .charAt (i );
304- writeBuffer [0 ] = (byte )(v >>> 8 );
305- writeBuffer [1 ] = (byte )(v >>> 0 );
298+ ByteArray .setUnsignedShort (writeBuffer , 0 , v );
306299 out .write (writeBuffer , 0 , 2 );
307300 }
308301 incCount (len * 2 );
@@ -379,9 +372,8 @@ static int writeUTF(String str, DataOutput out) throws IOException {
379372 }
380373
381374 int count = 0 ;
382- bytearr [count ++] = (byte ) ((utflen >>> 8 ) & 0xFF );
383- bytearr [count ++] = (byte ) ((utflen >>> 0 ) & 0xFF );
384-
375+ ByteArray .setUnsignedShort (bytearr , count , utflen );
376+ count += 2 ;
385377 int i = 0 ;
386378 for (i = 0 ; i < strlen ; i ++) { // optimized for initial run of ASCII
387379 int c = str .charAt (i );
0 commit comments