--- a/jdk/src/share/classes/sun/misc/FormattedFloatingDecimal.java Sat Dec 03 10:58:19 2011 +0900
+++ b/jdk/src/share/classes/sun/misc/FormattedFloatingDecimal.java Mon Dec 05 10:19:13 2011 +0800
@@ -333,7 +333,7 @@
// can do int arithmetic rather than long!
int ivalue = (int)lvalue;
ndigits = 10;
- digits = (char[])(perThreadBuffer.get());
+ digits = perThreadBuffer.get();
digitno = ndigits-1;
c = ivalue%10;
ivalue /= 10;
@@ -353,7 +353,7 @@
// same algorithm as above (same bugs, too )
// but using long arithmetic.
ndigits = 20;
- digits = (char[])(perThreadBuffer.get());
+ digits = perThreadBuffer.get();
digitno = ndigits-1;
c = (int)(lvalue%10L);
lvalue /= 10L;
@@ -554,9 +554,9 @@
}
// Begin to unpack
// Discover obvious special cases of NaN and Infinity.
- binExp = (int)( (fBits&singleExpMask) >> singleExpShift );
+ binExp = (fBits&singleExpMask) >> singleExpShift;
fractBits = fBits&singleFractMask;
- if ( binExp == (int)(singleExpMask>>singleExpShift) ) {
+ if ( binExp == (singleExpMask>>singleExpShift) ) {
isExceptional = true;
if ( fractBits == 0L ){
digits = infinity;
@@ -1140,8 +1140,8 @@
}
// Per-thread buffer for string/stringbuffer conversion
- private static ThreadLocal perThreadBuffer = new ThreadLocal() {
- protected synchronized Object initialValue() {
+ private static ThreadLocal<char[]> perThreadBuffer = new ThreadLocal<char[]>() {
+ protected synchronized char[] initialValue() {
return new char[26];
}
};