< prev index next >

src/java.base/share/classes/java/lang/Long.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1994, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 1994, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 157,172 **** boolean negative = (i < 0); if (!negative) { i = -i; } while (i <= -radix) { ! StringUTF16.putChar(buf, charPos--, Integer.digits[(int)(-(i % radix))]); i = i / radix; } ! StringUTF16.putChar(buf, charPos, Integer.digits[(int)(-i)]); if (negative) { ! StringUTF16.putChar(buf, --charPos, '-'); } return StringUTF16.newString(buf, charPos, (65 - charPos)); } /** --- 157,172 ---- boolean negative = (i < 0); if (!negative) { i = -i; } while (i <= -radix) { ! StringUTF16.Trusted.putChar(buf, charPos--, Integer.digits[(int)(-(i % radix))]); i = i / radix; } ! StringUTF16.Trusted.putChar(buf, charPos, Integer.digits[(int)(-i)]); if (negative) { ! StringUTF16.Trusted.putChar(buf, --charPos, '-'); } return StringUTF16.newString(buf, charPos, (65 - charPos)); } /**
*** 412,427 **** val >>>= shift; } while (charPos > offset); } /** byte[]/UTF16 version */ ! static void formatUnsignedLong0UTF16(long val, int shift, byte[] buf, int offset, int len) { int charPos = offset + len; int radix = 1 << shift; int mask = radix - 1; do { ! StringUTF16.putChar(buf, --charPos, Integer.digits[((int) val) & mask]); val >>>= shift; } while (charPos > offset); } static String fastUUID(long lsb, long msb) { --- 412,427 ---- val >>>= shift; } while (charPos > offset); } /** byte[]/UTF16 version */ ! private static void formatUnsignedLong0UTF16(long val, int shift, byte[] buf, int offset, int len) { int charPos = offset + len; int radix = 1 << shift; int mask = radix - 1; do { ! StringUTF16.Trusted.putChar(buf, --charPos, Integer.digits[((int) val) & mask]); val >>>= shift; } while (charPos > offset); } static String fastUUID(long lsb, long msb) {
*** 446,459 **** formatUnsignedLong0UTF16(lsb >>> 48, 4, buf, 19, 4); formatUnsignedLong0UTF16(msb, 4, buf, 14, 4); formatUnsignedLong0UTF16(msb >>> 16, 4, buf, 9, 4); formatUnsignedLong0UTF16(msb >>> 32, 4, buf, 0, 8); ! StringUTF16.putChar(buf, 23, '-'); ! StringUTF16.putChar(buf, 18, '-'); ! StringUTF16.putChar(buf, 13, '-'); ! StringUTF16.putChar(buf, 8, '-'); return new String(buf, UTF16); } } --- 446,459 ---- formatUnsignedLong0UTF16(lsb >>> 48, 4, buf, 19, 4); formatUnsignedLong0UTF16(msb, 4, buf, 14, 4); formatUnsignedLong0UTF16(msb >>> 16, 4, buf, 9, 4); formatUnsignedLong0UTF16(msb >>> 32, 4, buf, 0, 8); ! StringUTF16.Trusted.putChar(buf, 23, '-'); ! StringUTF16.Trusted.putChar(buf, 18, '-'); ! StringUTF16.Trusted.putChar(buf, 13, '-'); ! StringUTF16.Trusted.putChar(buf, 8, '-'); return new String(buf, UTF16); } }
*** 473,483 **** byte[] buf = new byte[size]; getChars(i, size, buf); return new String(buf, LATIN1); } else { byte[] buf = new byte[size * 2]; ! getCharsUTF16(i, size, buf); return new String(buf, UTF16); } } /** --- 473,483 ---- byte[] buf = new byte[size]; getChars(i, size, buf); return new String(buf, LATIN1); } else { byte[] buf = new byte[size * 2]; ! StringUTF16.Trusted.getChars(i, size, buf); return new String(buf, UTF16); } } /**
*** 560,624 **** } return charPos; } /** - * This is a variant of {@link #getChars(long, int, byte[])}, but for - * UTF-16 coder. - * - * @param i value to convert - * @param index next index, after the least significant digit - * @param buf target buffer, UTF16-coded. - * @return index of the most significant digit or minus sign, if present - */ - static int getCharsUTF16(long i, int index, byte[] buf) { - long q; - int r; - int charPos = index; - - boolean negative = (i < 0); - if (!negative) { - i = -i; - } - - // Get 2 digits/iteration using longs until quotient fits into an int - while (i <= Integer.MIN_VALUE) { - q = i / 100; - r = (int)((q * 100) - i); - i = q; - StringUTF16.putChar(buf, --charPos, Integer.DigitOnes[r]); - StringUTF16.putChar(buf, --charPos, Integer.DigitTens[r]); - } - - // Get 2 digits/iteration using ints - int q2; - int i2 = (int)i; - while (i2 <= -100) { - q2 = i2 / 100; - r = (q2 * 100) - i2; - i2 = q2; - StringUTF16.putChar(buf, --charPos, Integer.DigitOnes[r]); - StringUTF16.putChar(buf, --charPos, Integer.DigitTens[r]); - } - - // We know there are at most two digits left at this point. - q2 = i2 / 10; - r = (q2 * 10) - i2; - StringUTF16.putChar(buf, --charPos, '0' + r); - - // Whatever left is the remaining digit. - if (q2 < 0) { - StringUTF16.putChar(buf, --charPos, '0' - q2); - } - - if (negative) { - StringUTF16.putChar(buf, --charPos, '-'); - } - return charPos; - } - - /** * Returns the string representation size for a given long value. * * @param x long value * @return string size * --- 560,569 ----
< prev index next >