Remove redundant calls of toString()
There is an issue that was opened to remove redundant calls of toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes. [1]https://bugs.openjdk.java.net/browse/JDK-8015470 diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sat Apr 26 01:40:27 2014 -0300 @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null", expr); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {expr, MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {expr, strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/annotation/IncompleteAnnotationException.java --- a/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Sat Apr 26 01:40:27 2014 -0300 @@ -56,7 +56,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + elementName); this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/DateFormatSymbols.java --- a/src/share/classes/java/text/DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/DateFormatSymbols.java Sat Apr 26 01:40:27 2014 -0300 @@ -593,8 +593,8 @@ * pattern characters. */ public void setLocalPatternChars(String newLocalPatternChars) { - // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(); + + localPatternChars = Objects.requireNonNull(newLocalPatternChars); cachedHashCode = 0; } diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Sat Apr 26 01:40:27 2014 -0300 @@ -665,7 +665,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(); + responseFields[i] = currElement.getKey(); } } @@ -929,8 +929,8 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement.getKey()).toString(), - (currElement.getValue()).toString())) { + if (validateField((currElement.getKey()), + (currElement.getValue()))) { continue; } else { if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { diff -r e323c74edabd src/share/classes/javax/swing/text/html/FormView.java --- a/src/share/classes/javax/swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Sat Apr 26 01:40:27 2014 -0300 @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = data; actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/loops/Blit.java --- a/src/share/classes/sun/java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/Blit.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,7 +50,7 @@ public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/BlitBg.java --- a/src/share/classes/sun/java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/BlitBg.java Sat Apr 26 01:40:27 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphList.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphList.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphList.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive { - public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListAA.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive { - public final static String methodSignature = "DrawGlyphListAA(...)".toString(); + public final static String methodSignature = "DrawGlyphListAA(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Sat Apr 26 01:40:27 2014 -0300 @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive { public final static String - methodSignature = "DrawGlyphListLCD(...)".toString(); + methodSignature = "DrawGlyphListLCD(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawLine.java --- a/src/share/classes/sun/java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawLine.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawParallelogram.java --- a/src/share/classes/sun/java2d/loops/DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".toString(); + "DrawParallelogram(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPath.java --- a/src/share/classes/sun/java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive { public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPolygons.java --- a/src/share/classes/sun/java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPolygons.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString(); + public final static String methodSignature = "DrawPolygons(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawRect.java --- a/src/share/classes/sun/java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillParallelogram.java --- a/src/share/classes/sun/java2d/loops/FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".toString(); + "FillParallelogram(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillPath.java --- a/src/share/classes/sun/java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive { public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillRect.java --- a/src/share/classes/sun/java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillSpans.java --- a/src/share/classes/sun/java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillSpans.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskBlit.java --- a/src/share/classes/sun/java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -48,7 +48,7 @@ public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskFill.java --- a/src/share/classes/sun/java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskFill.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/ScaledBlit.java --- a/src/share/classes/sun/java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/ScaledBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@ public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformBlit.java --- a/src/share/classes/sun/java2d/loops/TransformBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(); + "TransformBlit(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformHelper.java --- a/src/share/classes/sun/java2d/loops/TransformHelper.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformHelper.java Sat Apr 26 01:40:27 2014 -0300 @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".toString(); + "TransformHelper(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sat Apr 26 01:40:27 2014 -0300 @@ -260,11 +260,11 @@ // Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken().toString()); + n = convertToken(stk.nextToken()); // Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken().toString()); + m = convertToken(ttk.nextToken()); if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sat Apr 26 01:40:27 2014 -0300 @@ -378,7 +378,7 @@ if (userInput instanceof XObject) { result[i] = ((XObject) userInput).getObject(); } else { - result[i] = createObjectFromString(params[i].toString(), + result[i] = createObjectFromString(params[i], (String) userInput); } } -- Cheers!. Otávio Gonçalves de Santana blog: http://otaviosantana.blogspot.com.br/ twitter: http://twitter.com/otaviojava site: *http://about.me/otaviojava <http://about.me/otaviojava>* 55 (11) 98255-3513
On 04/27/2014 03:15 PM, Otávio Gonçalves de Santana wrote:
There is an issue that was opened to remove redundant calls of toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes.
Otavio, calling toString() on a String has the side effect to implicitly check that the reference is not null. Do you have checked that for each redundant call, the String can never be null ? regards, Rémi
diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sat Apr 26 01:40:27 2014 -0300 @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null", expr); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {expr,
MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {expr,
strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/annotation/IncompleteAnnotationException.java --- a/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Sat Apr 26 01:40:27 2014 -0300 @@ -56,7 +56,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + elementName);
this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/DateFormatSymbols.java --- a/src/share/classes/java/text/DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/DateFormatSymbols.java Sat Apr 26 01:40:27 2014 -0300 @@ -593,8 +593,8 @@ * pattern characters. */ public void setLocalPatternChars(String newLocalPatternChars) { - // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(); + + localPatternChars = Objects.requireNonNull(newLocalPatternChars); cachedHashCode = 0; }
diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Sat Apr 26 01:40:27 2014 -0300 @@ -665,7 +665,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(); + responseFields[i] = currElement.getKey(); } }
@@ -929,8 +929,8 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement.getKey()).toString(), - (currElement.getValue()).toString())) { + if (validateField((currElement.getKey()), + (currElement.getValue()))) { continue; } else { if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { diff -r e323c74edabd src/share/classes/javax/swing/text/html/FormView.java --- a/src/share/classes/javax/swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Sat Apr 26 01:40:27 2014 -0300 @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = data; actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/loops/Blit.java --- a/src/share/classes/sun/java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/Blit.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/BlitBg.java --- a/src/share/classes/sun/java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/BlitBg.java Sat Apr 26 01:40:27 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphList.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphList.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphList.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListAA.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Sat Apr 26 01:40:27 2014 -0300 @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawLine.java --- a/src/share/classes/sun/java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawLine.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawParallelogram.java --- a/src/share/classes/sun/java2d/loops/DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPath.java --- a/src/share/classes/sun/java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPolygons.java --- a/src/share/classes/sun/java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPolygons.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString(); + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawRect.java --- a/src/share/classes/sun/java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillParallelogram.java --- a/src/share/classes/sun/java2d/loops/FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillPath.java --- a/src/share/classes/sun/java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillRect.java --- a/src/share/classes/sun/java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillSpans.java --- a/src/share/classes/sun/java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillSpans.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskBlit.java --- a/src/share/classes/sun/java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskFill.java --- a/src/share/classes/sun/java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskFill.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/ScaledBlit.java --- a/src/share/classes/sun/java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/ScaledBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformBlit.java --- a/src/share/classes/sun/java2d/loops/TransformBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformHelper.java --- a/src/share/classes/sun/java2d/loops/TransformHelper.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformHelper.java Sat Apr 26 01:40:27 2014 -0300 @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sat Apr 26 01:40:27 2014 -0300 @@ -260,11 +260,11 @@
// Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken().toString()); + n = convertToken(stk.nextToken());
// Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken().toString()); + m = convertToken(ttk.nextToken());
if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sat Apr 26 01:40:27 2014 -0300 @@ -378,7 +378,7 @@ if (userInput instanceof XObject) { result[i] = ((XObject) userInput).getObject(); } else { - result[i] = createObjectFromString(params[i].toString(), + result[i] = createObjectFromString(params[i], (String) userInput); } }
sorry. I tried answer and the message was twice. But Yes when has null pointer possibility I replaced to Objects.requireNonNull. I am review the code again. The code below: diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sun Apr 27 14:33:45 2014 -0300 @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null",Objects.requireNonNull(expr)); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {Objects.requireNonNull(expr), MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {Objects.requireNonNull(expr), strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/annotation/IncompleteAnnotationException.java --- a/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Sun Apr 27 14:33:45 2014 -0300 @@ -25,6 +25,8 @@ package java.lang.annotation; +import java.util.Objects; + /** * Thrown to indicate that a program has attempted to access an element of * an annotation type that was added to the annotation type definition after @@ -56,7 +58,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + Objects.requireNonNull(elementName)); this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/DateFormatSymbols.java --- a/src/share/classes/java/text/DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/DateFormatSymbols.java Sun Apr 27 14:33:45 2014 -0300 @@ -594,7 +594,7 @@ */ public void setLocalPatternChars(String newLocalPatternChars) { // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(); + localPatternChars = Objects.requireNonNull(newLocalPatternChars); cachedHashCode = 0; } diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Sun Apr 27 14:33:45 2014 -0300 @@ -43,13 +43,7 @@ import java.lang.reflect.Constructor; import java.security.AccessController; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.SortedMap; -import java.util.StringTokenizer; -import java.util.TreeMap; +import java.util.*; import java.util.logging.Level; import javax.management.Descriptor; @@ -665,7 +659,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(); + responseFields[i] = Objects.requireNonNull(currElement.getKey()); } } @@ -929,7 +923,7 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement.getKey()).toString(), + if (validateField((Objects.requireNonNull(currElement.getKey())), (currElement.getValue()).toString())) { continue; } else { diff -r e323c74edabd src/share/classes/javax/swing/text/html/FormView.java --- a/src/share/classes/javax/swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Sun Apr 27 14:33:45 2014 -0300 @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = Objects.requireNonNull(data); actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/loops/Blit.java --- a/src/share/classes/sun/java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/Blit.java Sun Apr 27 14:33:45 2014 -0300 @@ -50,7 +50,7 @@ public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/BlitBg.java --- a/src/share/classes/sun/java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/BlitBg.java Sun Apr 27 14:33:45 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphList.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphList.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphList.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive { - public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListAA.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive { - public final static String methodSignature = "DrawGlyphListAA(...)".toString(); + public final static String methodSignature = "DrawGlyphListAA(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Sun Apr 27 14:33:45 2014 -0300 @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive { public final static String - methodSignature = "DrawGlyphListLCD(...)".toString(); + methodSignature = "DrawGlyphListLCD(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawLine.java --- a/src/share/classes/sun/java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawLine.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawParallelogram.java --- a/src/share/classes/sun/java2d/loops/DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawParallelogram.java Sun Apr 27 14:33:45 2014 -0300 @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".toString(); + "DrawParallelogram(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPath.java --- a/src/share/classes/sun/java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPath.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive { public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPolygons.java --- a/src/share/classes/sun/java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPolygons.java Sun Apr 27 14:33:45 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString(); + public final static String methodSignature = "DrawPolygons(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawRect.java --- a/src/share/classes/sun/java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawRect.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillParallelogram.java --- a/src/share/classes/sun/java2d/loops/FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillParallelogram.java Sun Apr 27 14:33:45 2014 -0300 @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".toString(); + "FillParallelogram(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillPath.java --- a/src/share/classes/sun/java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillPath.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive { public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillRect.java --- a/src/share/classes/sun/java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillRect.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillSpans.java --- a/src/share/classes/sun/java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillSpans.java Sun Apr 27 14:33:45 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)"; public final static int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskBlit.java --- a/src/share/classes/sun/java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -48,7 +48,7 @@ public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskFill.java --- a/src/share/classes/sun/java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskFill.java Sun Apr 27 14:33:45 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/ScaledBlit.java --- a/src/share/classes/sun/java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/ScaledBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -45,7 +45,7 @@ public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformBlit.java --- a/src/share/classes/sun/java2d/loops/TransformBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(); + "TransformBlit(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformHelper.java --- a/src/share/classes/sun/java2d/loops/TransformHelper.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformHelper.java Sun Apr 27 14:33:45 2014 -0300 @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".toString(); + "TransformHelper(...)"; public static final int primTypeID = makePrimTypeID(); diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sun Apr 27 14:33:45 2014 -0300 @@ -25,6 +25,7 @@ package sun.misc; +import java.util.Objects; import java.util.StringTokenizer; import java.util.jar.Attributes; import java.util.jar.Attributes.Name; @@ -260,11 +261,11 @@ // Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken().toString()); + n = convertToken(Objects.requireNonNull(stk.nextToken())); // Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken().toString()); + m = convertToken(Objects.requireNonNull(ttk.nextToken())); if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sun Apr 27 14:33:45 2014 -0300 @@ -378,7 +378,7 @@ if (userInput instanceof XObject) { result[i] = ((XObject) userInput).getObject(); } else { - result[i] = createObjectFromString(params[i].toString(), + result[i] = createObjectFromString(Objects.requireNonNull(params[i]), (String) userInput); } } On Sun, Apr 27, 2014 at 1:09 PM, Remi Forax <forax@univ-mlv.fr> wrote:
On 04/27/2014 03:15 PM, Otávio Gonçalves de Santana wrote:
There is an issue that was opened to remove redundant calls of toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes.
Otavio, calling toString() on a String has the side effect to implicitly check that the reference is not null. Do you have checked that for each redundant call, the String can never be null ?
regards, Rémi
diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sat Apr 26 01:40:27 2014 -0300 @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null", expr); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {expr,
MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {expr,
strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/annotation/IncompleteAnnotationException.java --- a/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Sat Apr 26 01:40:27 2014 -0300 @@ -56,7 +56,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + elementName);
this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/DateFormatSymbols.java --- a/src/share/classes/java/text/DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/DateFormatSymbols.java Sat Apr 26 01:40:27 2014 -0300 @@ -593,8 +593,8 @@ * pattern characters. */ public void setLocalPatternChars(String newLocalPatternChars) { - // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(); + + localPatternChars = Objects.requireNonNull( newLocalPatternChars); cachedHashCode = 0; }
diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Sat Apr 26 01:40:27 2014 -0300 @@ -665,7 +665,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(); + responseFields[i] = currElement.getKey(); } }
@@ -929,8 +929,8 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement.getKey()).toString(), - (currElement.getValue()).toString())) { + if (validateField((currElement.getKey()), + (currElement.getValue()))) { continue; } else { if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { diff -r e323c74edabd src/share/classes/javax/swing/ text/html/FormView.java --- a/src/share/classes/javax/swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Sat Apr 26 01:40:27 2014 -0300 @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = data; actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/loops/Blit.java --- a/src/share/classes/sun/java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/Blit.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/BlitBg.java --- a/src/share/classes/sun/java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/BlitBg.java Sat Apr 26 01:40:27 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphList.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphList.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphList.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphListAA.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Sat Apr 26 01:40:27 2014 -0300 @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawLine.java --- a/src/share/classes/sun/java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawLine.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawParallelogram.java --- a/src/share/classes/sun/java2d/loops/DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPath.java --- a/src/share/classes/sun/java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPolygons.java --- a/src/share/classes/sun/java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPolygons.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString(); + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawRect.java --- a/src/share/classes/sun/java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillParallelogram.java --- a/src/share/classes/sun/java2d/loops/FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillPath.java --- a/src/share/classes/sun/java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillRect.java --- a/src/share/classes/sun/java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillSpans.java --- a/src/share/classes/sun/java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillSpans.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskBlit.java --- a/src/share/classes/sun/java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskFill.java --- a/src/share/classes/sun/java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskFill.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/ScaledBlit.java --- a/src/share/classes/sun/java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/ScaledBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformBlit.java --- a/src/share/classes/sun/java2d/loops/TransformBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformHelper.java --- a/src/share/classes/sun/java2d/loops/TransformHelper.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformHelper.java Sat Apr 26 01:40:27 2014 -0300 @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sat Apr 26 01:40:27 2014 -0300 @@ -260,11 +260,11 @@
// Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken().toString()); + n = convertToken(stk.nextToken());
// Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken().toString()); + m = convertToken(ttk.nextToken());
if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sat Apr 26 01:40:27 2014 -0300 @@ -378,7 +378,7 @@ if (userInput instanceof XObject) { result[i] = ((XObject) userInput).getObject(); } else { - result[i] = createObjectFromString(params[i].toString(), + result[i] = createObjectFromString(params[i], (String) userInput); } }
-- Atenciosamente. Otávio Gonçalves de Santana blog: http://otaviosantana.blogspot.com.br/ twitter: http://twitter.com/otaviojava site: http://www.otaviojava.com.br (11) 98255-3513
On 28/04/2014 3:41 AM, Otávio Gonçalves de Santana wrote:
sorry. I tried answer and the message was twice. But Yes when has null pointer possibility I replaced to Objects.requireNonNull.
In my opinion that is making the code worse not better. David -----
I am review the code again. The code below:
diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sun Apr 27 14:33:45 2014 -0300 @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null",Objects.requireNonNull(expr)); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {Objects.requireNonNull(expr),
MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {Objects.requireNonNull(expr),
strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/annotation/IncompleteAnnotationException.java --- a/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Sun Apr 27 14:33:45 2014 -0300 @@ -25,6 +25,8 @@
package java.lang.annotation;
+import java.util.Objects; + /** * Thrown to indicate that a program has attempted to access an element of * an annotation type that was added to the annotation type definition after @@ -56,7 +58,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + Objects.requireNonNull(elementName));
this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/DateFormatSymbols.java --- a/src/share/classes/java/text/DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/DateFormatSymbols.java Sun Apr 27 14:33:45 2014 -0300 @@ -594,7 +594,7 @@ */ public void setLocalPatternChars(String newLocalPatternChars) { // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(); + localPatternChars = Objects.requireNonNull(newLocalPatternChars); cachedHashCode = 0; }
diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Sun Apr 27 14:33:45 2014 -0300 @@ -43,13 +43,7 @@ import java.lang.reflect.Constructor;
import java.security.AccessController; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.SortedMap; -import java.util.StringTokenizer; -import java.util.TreeMap; +import java.util.*; import java.util.logging.Level;
import javax.management.Descriptor; @@ -665,7 +659,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(); + responseFields[i] = Objects.requireNonNull(currElement.getKey()); } }
@@ -929,7 +923,7 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement.getKey()).toString(), + if (validateField((Objects.requireNonNull(currElement.getKey())),
(currElement.getValue()).toString())) { continue; } else { diff -r e323c74edabd src/share/classes/javax/swing/text/html/FormView.java --- a/src/share/classes/javax/swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Sun Apr 27 14:33:45 2014 -0300 @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = Objects.requireNonNull(data); actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/loops/Blit.java --- a/src/share/classes/sun/java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/Blit.java Sun Apr 27 14:33:45 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/BlitBg.java --- a/src/share/classes/sun/java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/BlitBg.java Sun Apr 27 14:33:45 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphList.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphList.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphList.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListAA.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Sun Apr 27 14:33:45 2014 -0300 @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawLine.java --- a/src/share/classes/sun/java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawLine.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawParallelogram.java --- a/src/share/classes/sun/java2d/loops/DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawParallelogram.java Sun Apr 27 14:33:45 2014 -0300 @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPath.java --- a/src/share/classes/sun/java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPath.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPolygons.java --- a/src/share/classes/sun/java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPolygons.java Sun Apr 27 14:33:45 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString(); + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawRect.java --- a/src/share/classes/sun/java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawRect.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillParallelogram.java --- a/src/share/classes/sun/java2d/loops/FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillParallelogram.java Sun Apr 27 14:33:45 2014 -0300 @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillPath.java --- a/src/share/classes/sun/java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillPath.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillRect.java --- a/src/share/classes/sun/java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillRect.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillSpans.java --- a/src/share/classes/sun/java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillSpans.java Sun Apr 27 14:33:45 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskBlit.java --- a/src/share/classes/sun/java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskFill.java --- a/src/share/classes/sun/java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskFill.java Sun Apr 27 14:33:45 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/ScaledBlit.java --- a/src/share/classes/sun/java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/ScaledBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformBlit.java --- a/src/share/classes/sun/java2d/loops/TransformBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformHelper.java --- a/src/share/classes/sun/java2d/loops/TransformHelper.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformHelper.java Sun Apr 27 14:33:45 2014 -0300 @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sun Apr 27 14:33:45 2014 -0300 @@ -25,6 +25,7 @@
package sun.misc;
+import java.util.Objects; import java.util.StringTokenizer; import java.util.jar.Attributes; import java.util.jar.Attributes.Name; @@ -260,11 +261,11 @@
// Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken().toString()); + n = convertToken(Objects.requireNonNull(stk.nextToken()));
// Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken().toString()); + m = convertToken(Objects.requireNonNull(ttk.nextToken()));
if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sun Apr 27 14:33:45 2014 -0300 @@ -378,7 +378,7 @@ if (userInput instanceof XObject) { result[i] = ((XObject) userInput).getObject(); } else { - result[i] = createObjectFromString(params[i].toString(), + result[i] = createObjectFromString(Objects.requireNonNull(params[i]), (String) userInput); } }
On Sun, Apr 27, 2014 at 1:09 PM, Remi Forax <forax@univ-mlv.fr> wrote:
On 04/27/2014 03:15 PM, Otávio Gonçalves de Santana wrote:
There is an issue that was opened to remove redundant calls of toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes.
Otavio, calling toString() on a String has the side effect to implicitly check that the reference is not null. Do you have checked that for each redundant call, the String can never be null ?
regards, Rémi
diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sat Apr 26 01:40:27 2014 -0300 @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null", expr); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {expr,
MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {expr,
strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/annotation/IncompleteAnnotationException.java --- a/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Sat Apr 26 01:40:27 2014 -0300 @@ -56,7 +56,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + elementName);
this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/DateFormatSymbols.java --- a/src/share/classes/java/text/DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/DateFormatSymbols.java Sat Apr 26 01:40:27 2014 -0300 @@ -593,8 +593,8 @@ * pattern characters. */ public void setLocalPatternChars(String newLocalPatternChars) { - // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(); + + localPatternChars = Objects.requireNonNull( newLocalPatternChars); cachedHashCode = 0; }
diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Sat Apr 26 01:40:27 2014 -0300 @@ -665,7 +665,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(); + responseFields[i] = currElement.getKey(); } }
@@ -929,8 +929,8 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement.getKey()).toString(), - (currElement.getValue()).toString())) { + if (validateField((currElement.getKey()), + (currElement.getValue()))) { continue; } else { if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { diff -r e323c74edabd src/share/classes/javax/swing/ text/html/FormView.java --- a/src/share/classes/javax/swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Sat Apr 26 01:40:27 2014 -0300 @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = data; actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/loops/Blit.java --- a/src/share/classes/sun/java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/Blit.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/BlitBg.java --- a/src/share/classes/sun/java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/BlitBg.java Sat Apr 26 01:40:27 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphList.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphList.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphList.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphListAA.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Sat Apr 26 01:40:27 2014 -0300 @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawLine.java --- a/src/share/classes/sun/java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawLine.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawParallelogram.java --- a/src/share/classes/sun/java2d/loops/DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPath.java --- a/src/share/classes/sun/java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPolygons.java --- a/src/share/classes/sun/java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPolygons.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString(); + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawRect.java --- a/src/share/classes/sun/java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillParallelogram.java --- a/src/share/classes/sun/java2d/loops/FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillPath.java --- a/src/share/classes/sun/java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillRect.java --- a/src/share/classes/sun/java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillSpans.java --- a/src/share/classes/sun/java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillSpans.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskBlit.java --- a/src/share/classes/sun/java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskFill.java --- a/src/share/classes/sun/java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskFill.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/ScaledBlit.java --- a/src/share/classes/sun/java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/ScaledBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformBlit.java --- a/src/share/classes/sun/java2d/loops/TransformBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformHelper.java --- a/src/share/classes/sun/java2d/loops/TransformHelper.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformHelper.java Sat Apr 26 01:40:27 2014 -0300 @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sat Apr 26 01:40:27 2014 -0300 @@ -260,11 +260,11 @@
// Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken().toString()); + n = convertToken(stk.nextToken());
// Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken().toString()); + m = convertToken(ttk.nextToken());
if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sat Apr 26 01:40:27 2014 -0300 @@ -378,7 +378,7 @@ if (userInput instanceof XObject) { result[i] = ((XObject) userInput).getObject(); } else { - result[i] = createObjectFromString(params[i].toString(), + result[i] = createObjectFromString(params[i], (String) userInput); } }
In my opinion not, because Objects.requireNonNull is more readable than just string.toString. This way is more understandable which field is required and doesn't impact on performance. On Sun, Apr 27, 2014 at 11:33 PM, David Holmes <david.holmes@oracle.com>wrote:
On 28/04/2014 3:41 AM, Otávio Gonçalves de Santana wrote:
sorry. I tried answer and the message was twice. But Yes when has null pointer possibility I replaced to Objects.requireNonNull.
In my opinion that is making the code worse not better.
David -----
I am review the code again.
The code below:
diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sun Apr 27 14:33:45 2014 -0300 @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null",Objects.requireNonNull(expr)); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {Objects.requireNonNull(expr),
MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {Objects.requireNonNull(expr),
strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/annotation/IncompleteAnnotationException.java --- a/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Sun Apr 27 14:33:45 2014 -0300 @@ -25,6 +25,8 @@
package java.lang.annotation;
+import java.util.Objects; + /** * Thrown to indicate that a program has attempted to access an element of * an annotation type that was added to the annotation type definition after @@ -56,7 +58,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + Objects.requireNonNull(elementName));
this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/DateFormatSymbols.java --- a/src/share/classes/java/text/DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/DateFormatSymbols.java Sun Apr 27 14:33:45 2014 -0300 @@ -594,7 +594,7 @@ */ public void setLocalPatternChars(String newLocalPatternChars) { // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(); + localPatternChars = Objects.requireNonNull( newLocalPatternChars); cachedHashCode = 0; }
diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Sun Apr 27 14:33:45 2014 -0300 @@ -43,13 +43,7 @@ import java.lang.reflect.Constructor;
import java.security.AccessController; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.SortedMap; -import java.util.StringTokenizer; -import java.util.TreeMap; +import java.util.*; import java.util.logging.Level;
import javax.management.Descriptor; @@ -665,7 +659,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(); + responseFields[i] = Objects.requireNonNull(currElement.getKey()); } }
@@ -929,7 +923,7 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement.getKey()).toString(), + if (validateField((Objects.requireNonNull(currElement.getKey())),
(currElement.getValue()).toString())) { continue; } else { diff -r e323c74edabd src/share/classes/javax/swing/ text/html/FormView.java --- a/src/share/classes/javax/swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Sun Apr 27 14:33:45 2014 -0300 @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = Objects.requireNonNull(data); actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/loops/Blit.java --- a/src/share/classes/sun/java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/Blit.java Sun Apr 27 14:33:45 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/BlitBg.java --- a/src/share/classes/sun/java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/BlitBg.java Sun Apr 27 14:33:45 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphList.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphList.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphList.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphListAA.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Sun Apr 27 14:33:45 2014 -0300 @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawLine.java --- a/src/share/classes/sun/java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawLine.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawParallelogram.java --- a/src/share/classes/sun/java2d/loops/DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawParallelogram.java Sun Apr 27 14:33:45 2014 -0300 @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPath.java --- a/src/share/classes/sun/java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPath.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPolygons.java --- a/src/share/classes/sun/java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPolygons.java Sun Apr 27 14:33:45 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString(); + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawRect.java --- a/src/share/classes/sun/java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawRect.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillParallelogram.java --- a/src/share/classes/sun/java2d/loops/FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillParallelogram.java Sun Apr 27 14:33:45 2014 -0300 @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillPath.java --- a/src/share/classes/sun/java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillPath.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillRect.java --- a/src/share/classes/sun/java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillRect.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillSpans.java --- a/src/share/classes/sun/java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillSpans.java Sun Apr 27 14:33:45 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskBlit.java --- a/src/share/classes/sun/java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskFill.java --- a/src/share/classes/sun/java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskFill.java Sun Apr 27 14:33:45 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/ScaledBlit.java --- a/src/share/classes/sun/java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/ScaledBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformBlit.java --- a/src/share/classes/sun/java2d/loops/TransformBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformHelper.java --- a/src/share/classes/sun/java2d/loops/TransformHelper.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformHelper.java Sun Apr 27 14:33:45 2014 -0300 @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sun Apr 27 14:33:45 2014 -0300 @@ -25,6 +25,7 @@
package sun.misc;
+import java.util.Objects; import java.util.StringTokenizer; import java.util.jar.Attributes; import java.util.jar.Attributes.Name; @@ -260,11 +261,11 @@
// Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken().toString()); + n = convertToken(Objects.requireNonNull(stk.nextToken()));
// Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken().toString()); + m = convertToken(Objects.requireNonNull(ttk.nextToken()));
if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sun Apr 27 14:33:45 2014 -0300 @@ -378,7 +378,7 @@ if (userInput instanceof XObject) { result[i] = ((XObject) userInput).getObject(); } else { - result[i] = createObjectFromString(params[i].toString(), + result[i] = createObjectFromString(Objects.requireNonNull(params[i]), (String) userInput); } }
On Sun, Apr 27, 2014 at 1:09 PM, Remi Forax <forax@univ-mlv.fr> wrote:
On 04/27/2014 03:15 PM, Otávio Gonçalves de Santana wrote:
There is an issue that was opened to remove redundant calls of
toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes.
Otavio, calling toString() on a String has the side effect to implicitly check that the reference is not null. Do you have checked that for each redundant call, the String can never be null ?
regards, Rémi
diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sat Apr 26 01:40:27 2014 -0300 @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null", expr); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {expr,
MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {expr,
strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/annotation/IncompleteAnnotationException. java --- a/src/share/classes/java/lang/annotation/IncompleteAnnotationException. java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/annotation/IncompleteAnnotationException. java Sat Apr 26 01:40:27 2014 -0300 @@ -56,7 +56,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + elementName);
this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/DateFormatSymbols.java --- a/src/share/classes/java/text/DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/DateFormatSymbols.java Sat Apr 26 01:40:27 2014 -0300 @@ -593,8 +593,8 @@ * pattern characters. */ public void setLocalPatternChars(String newLocalPatternChars) { - // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(); + + localPatternChars = Objects.requireNonNull( newLocalPatternChars); cachedHashCode = 0; }
diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/ DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/ DescriptorSupport.java Sat Apr 26 01:40:27 2014 -0300 @@ -665,7 +665,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(); + responseFields[i] = currElement.getKey(); } }
@@ -929,8 +929,8 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement. getKey()).toString(), - (currElement.getValue()).toString())) { + if (validateField((currElement.getKey()), + (currElement.getValue()))) { continue; } else { if (MODELMBEAN_LOGGER.isLoggable( Level.FINEST)) { diff -r e323c74edabd src/share/classes/javax/swing/ text/html/FormView.java --- a/src/share/classes/javax/swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Sat Apr 26 01:40:27 2014 -0300 @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = data; actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/loops/Blit.java --- a/src/share/classes/sun/java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/Blit.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/BlitBg.java --- a/src/share/classes/sun/java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/BlitBg.java Sat Apr 26 01:40:27 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphList.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphList.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphList.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphListAA.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Sat Apr 26 01:40:27 2014 -0300 @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawLine.java --- a/src/share/classes/sun/java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawLine.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawParallelogram.java --- a/src/share/classes/sun/java2d/loops/DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPath.java --- a/src/share/classes/sun/java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawPolygons.java --- a/src/share/classes/sun/java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPolygons.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString(); + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawRect.java --- a/src/share/classes/sun/java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillParallelogram.java --- a/src/share/classes/sun/java2d/loops/FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillPath.java --- a/src/share/classes/sun/java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillRect.java --- a/src/share/classes/sun/java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillSpans.java --- a/src/share/classes/sun/java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillSpans.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskBlit.java --- a/src/share/classes/sun/java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskFill.java --- a/src/share/classes/sun/java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskFill.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/ScaledBlit.java --- a/src/share/classes/sun/java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/ScaledBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformBlit.java --- a/src/share/classes/sun/java2d/loops/TransformBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformHelper.java --- a/src/share/classes/sun/java2d/loops/TransformHelper.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformHelper.java Sat Apr 26 01:40:27 2014 -0300 @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sat Apr 26 01:40:27 2014 -0300 @@ -260,11 +260,11 @@
// Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken().toString()); + n = convertToken(stk.nextToken());
// Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken().toString()); + m = convertToken(ttk.nextToken());
if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sat Apr 26 01:40:27 2014 -0300 @@ -378,7 +378,7 @@ if (userInput instanceof XObject) { result[i] = ((XObject) userInput).getObject(); } else { - result[i] = createObjectFromString(params[ i].toString(), + result[i] = createObjectFromString(params[i], (String) userInput); } }
-- Atenciosamente. Otávio Gonçalves de Santana blog: http://otaviosantana.blogspot.com.br/ twitter: http://twitter.com/otaviojava site: http://www.otaviojava.com.br (11) 98255-3513
On 28/04/2014 1:05 PM, Otávio Gonçalves de Santana wrote:
In my opinion not, because Objects.requireNonNull is more readable than just string.toString. This way is more understandable which field is required and doesn't impact on performance.
An invocation of requireNonNull is potentially more expensive than the implicit null check that happens with foo.toString(). David -----
On Sun, Apr 27, 2014 at 11:33 PM, David Holmes <david.holmes@oracle.com <mailto:david.holmes@oracle.com>> wrote:
On 28/04/2014 3:41 AM, Otávio Gonçalves de Santana wrote:
sorry. I tried answer and the message was twice. But Yes when has null pointer possibility I replaced to Objects.requireNonNull.
In my opinion that is making the code worse not better.
David -----
I am review the code again. The code below:
diff -r e323c74edabd src/share/classes/com/sun/__tools/example/debug/tty/__Commands.java --- a/src/share/classes/com/sun/__tools/example/debug/tty/__Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/__tools/example/debug/tty/__Commands.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null",Objects.requireNonNull(__expr)); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {Objects.requireNonNull(expr),
MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("__grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {Objects.requireNonNull(expr),
strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/__annotation/__IncompleteAnnotationException.__java --- a/src/share/classes/java/lang/__annotation/__IncompleteAnnotationException.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/__annotation/__IncompleteAnnotationException.__java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -25,6 +25,8 @@
package java.lang.annotation;
+import java.util.Objects; + /** * Thrown to indicate that a program has attempted to access an element of * an annotation type that was added to the annotation type definition after @@ -56,7 +58,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + Objects.requireNonNull(__elementName));
this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/__DateFormatSymbols.java --- a/src/share/classes/java/text/__DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/__DateFormatSymbols.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -594,7 +594,7 @@ */ public void setLocalPatternChars(String newLocalPatternChars) { // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(__); + localPatternChars = Objects.requireNonNull(__newLocalPatternChars); cachedHashCode = 0; }
diff -r e323c74edabd src/share/classes/javax/__management/modelmbean/__DescriptorSupport.java --- a/src/share/classes/javax/__management/modelmbean/__DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/__management/modelmbean/__DescriptorSupport.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -43,13 +43,7 @@ import java.lang.reflect.Constructor;
import java.security.__AccessController; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.SortedMap; -import java.util.StringTokenizer; -import java.util.TreeMap; +import java.util.*; import java.util.logging.Level;
import javax.management.Descriptor; @@ -665,7 +659,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(__); + responseFields[i] = Objects.requireNonNull(__currElement.getKey()); } }
@@ -929,7 +923,7 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement.__getKey()).toString(), + if (validateField((Objects.__requireNonNull(currElement.__getKey())),
(currElement.getValue()).__toString())) { continue; } else { diff -r e323c74edabd src/share/classes/javax/swing/__text/html/FormView.java --- a/src/share/classes/javax/__swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/__swing/text/html/FormView.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = Objects.requireNonNull(data); actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/__loops/Blit.java --- a/src/share/classes/sun/__java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/Blit.java Sun Apr 27 14:33:45 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/BlitBg.java --- a/src/share/classes/sun/__java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/BlitBg.java Sun Apr 27 14:33:45 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawGlyphList.java --- a/src/share/classes/sun/__java2d/loops/DrawGlyphList.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawGlyphList.__java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(__); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawGlyphListAA.java --- a/src/share/classes/sun/__java2d/loops/DrawGlyphListAA.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawGlyphListAA.__java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".__toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/__java2d/loops/DrawGlyphListLCD.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawGlyphListLCD.__java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".__toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawLine.java --- a/src/share/classes/sun/__java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawLine.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawParallelogram.java --- a/src/share/classes/sun/__java2d/loops/__DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/__DrawParallelogram.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".__toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawPath.java --- a/src/share/classes/sun/__java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawPath.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawPolygons.java --- a/src/share/classes/sun/__java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawPolygons.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString()__; + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawRect.java --- a/src/share/classes/sun/__java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawRect.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillParallelogram.java --- a/src/share/classes/sun/__java2d/loops/__FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/__FillParallelogram.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".__toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillPath.java --- a/src/share/classes/sun/__java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/FillPath.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillRect.java --- a/src/share/classes/sun/__java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/FillRect.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillSpans.java --- a/src/share/classes/sun/__java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/FillSpans.java Sun Apr 27 14:33:45 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/MaskBlit.java --- a/src/share/classes/sun/__java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/MaskBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/MaskFill.java --- a/src/share/classes/sun/__java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/MaskFill.java Sun Apr 27 14:33:45 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/ScaledBlit.java --- a/src/share/classes/sun/__java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/ScaledBlit.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/TransformBlit.java --- a/src/share/classes/sun/__java2d/loops/TransformBlit.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/TransformBlit.__java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(__); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/TransformHelper.java --- a/src/share/classes/sun/__java2d/loops/TransformHelper.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/TransformHelper.__java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".__toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/misc/__ExtensionInfo.java --- a/src/share/classes/sun/misc/__ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/__ExtensionInfo.java Sun Apr 27 14:33:45 2014 -0300 @@ -25,6 +25,7 @@
package sun.misc;
+import java.util.Objects; import java.util.StringTokenizer; import java.util.jar.Attributes; import java.util.jar.Attributes.Name <http://java.util.jar.Attributes.Name>; @@ -260,11 +261,11 @@
// Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken().__toString()); + n = convertToken(Objects.__requireNonNull(stk.nextToken()__));
// Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken().__toString()); + m = convertToken(Objects.__requireNonNull(ttk.nextToken()__));
if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/__jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/__jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/__jconsole/inspector/Utils.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -378,7 +378,7 @@ if (userInput instanceof XObject) { result[i] = ((XObject) userInput).getObject(); } else { - result[i] = createObjectFromString(params[__i].toString(), + result[i] = createObjectFromString(__Objects.requireNonNull(params[__i]), (String) userInput); } }
On Sun, Apr 27, 2014 at 1:09 PM, Remi Forax <forax@univ-mlv.fr <mailto:forax@univ-mlv.fr>> wrote:
On 04/27/2014 03:15 PM, Otávio Gonçalves de Santana wrote:
There is an issue that was opened to remove redundant calls of toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes.
[1]https://bugs.openjdk.java.__net/browse/JDK-8015470 <https://bugs.openjdk.java.net/browse/JDK-8015470>
Otavio, calling toString() on a String has the side effect to implicitly check that the reference is not null. Do you have checked that for each redundant call, the String can never be null ?
regards, Rémi
diff -r e323c74edabd src/share/classes/com/sun/__tools/example/debug/tty/__Commands.java --- a/src/share/classes/com/sun/__tools/example/debug/tty/__Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/__tools/example/debug/tty/__Commands.java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null", expr); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {expr,
MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("__grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {expr,
strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/__annotation/__IncompleteAnnotationException.__java --- a/src/share/classes/java/lang/__annotation/__IncompleteAnnotationException.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/__annotation/__IncompleteAnnotationException.__java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -56,7 +56,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + elementName);
this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/__DateFormatSymbols.java --- a/src/share/classes/java/text/__DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/__DateFormatSymbols.java Sat Apr 26 01:40:27 2014 -0300 @@ -593,8 +593,8 @@ * pattern characters. */ public void setLocalPatternChars(String newLocalPatternChars) { - // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(__); + + localPatternChars = Objects.requireNonNull( newLocalPatternChars); cachedHashCode = 0; }
diff -r e323c74edabd src/share/classes/javax/__management/modelmbean/__DescriptorSupport.java --- a/src/share/classes/javax/__management/modelmbean/__DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/__management/modelmbean/__DescriptorSupport.java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -665,7 +665,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(__); + responseFields[i] = currElement.getKey(); } }
@@ -929,8 +929,8 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement.__getKey()).toString(), - (currElement.getValue()).__toString())) { + if (validateField((currElement.__getKey()), + (currElement.getValue()))) { continue; } else { if (MODELMBEAN_LOGGER.isLoggable(__Level.FINEST)) { diff -r e323c74edabd src/share/classes/javax/swing/ text/html/FormView.java --- a/src/share/classes/javax/__swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/__swing/text/html/FormView.java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -478,7 +478,7 @@
base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = data; actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/__loops/Blit.java --- a/src/share/classes/sun/__java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/Blit.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/BlitBg.java --- a/src/share/classes/sun/__java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/BlitBg.java Sat Apr 26 01:40:27 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphList.java --- a/src/share/classes/sun/__java2d/loops/DrawGlyphList.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawGlyphList.__java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(__); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphListAA.java --- a/src/share/classes/sun/__java2d/loops/DrawGlyphListAA.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawGlyphListAA.__java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".__toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/__java2d/loops/DrawGlyphListLCD.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawGlyphListLCD.__java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".__toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawLine.java --- a/src/share/classes/sun/__java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawLine.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawParallelogram.java --- a/src/share/classes/sun/__java2d/loops/__DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/__DrawParallelogram.java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".__toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawPath.java --- a/src/share/classes/sun/__java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawPolygons.java --- a/src/share/classes/sun/__java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawPolygons.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString()__; + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawRect.java --- a/src/share/classes/sun/__java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillParallelogram.java --- a/src/share/classes/sun/__java2d/loops/__FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/__FillParallelogram.java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".__toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillPath.java --- a/src/share/classes/sun/__java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/FillPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillRect.java --- a/src/share/classes/sun/__java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/FillRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillSpans.java --- a/src/share/classes/sun/__java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/FillSpans.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/MaskBlit.java --- a/src/share/classes/sun/__java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/MaskBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/MaskFill.java --- a/src/share/classes/sun/__java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/MaskFill.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/ScaledBlit.java --- a/src/share/classes/sun/__java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/ScaledBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformBlit.java --- a/src/share/classes/sun/__java2d/loops/TransformBlit.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/TransformBlit.__java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(__); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformHelper.java --- a/src/share/classes/sun/__java2d/loops/TransformHelper.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/TransformHelper.__java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".__toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/misc/__ExtensionInfo.java --- a/src/share/classes/sun/misc/__ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/__ExtensionInfo.java Sat Apr 26 01:40:27 2014 -0300 @@ -260,11 +260,11 @@
// Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken().__toString()); + n = convertToken(stk.nextToken());
// Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken().__toString()); + m = convertToken(ttk.nextToken());
if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/__jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/__jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/__jconsole/inspector/Utils.java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -378,7 +378,7 @@ if (userInput instanceof XObject) { result[i] = ((XObject) userInput).getObject(); } else { - result[i] = createObjectFromString(params[__i].toString(), + result[i] = createObjectFromString(params[__i], (String) userInput); } }
-- Atenciosamente.
Otávio Gonçalves de Santana
blog: http://otaviosantana.blogspot.com.br/ twitter: http://twitter.com/otaviojava site: http://www.otaviojava.com.br <http://www.otaviojava.com.br/> (11) 98255-3513
Yes you are right, but I mean it doesn't too much expensive enough to don't use the requireNonNull. IMHO. On Mon, Apr 28, 2014 at 3:57 AM, David Holmes <david.holmes@oracle.com>wrote:
On 28/04/2014 1:05 PM, Otávio Gonçalves de Santana wrote:
In my opinion not, because Objects.requireNonNull is more readable than just string.toString. This way is more understandable which field is required and doesn't impact on performance.
An invocation of requireNonNull is potentially more expensive than the implicit null check that happens with foo.toString().
David -----
On Sun, Apr 27, 2014 at 11:33 PM, David Holmes <david.holmes@oracle.com <mailto:david.holmes@oracle.com>> wrote:
On 28/04/2014 3:41 AM, Otávio Gonçalves de Santana wrote:
sorry. I tried answer and the message was twice. But Yes when has null pointer possibility I replaced to Objects.requireNonNull.
In my opinion that is making the code worse not better.
David -----
I am review the code again. The code below:
diff -r e323c74edabd src/share/classes/com/sun/__tools/example/debug/tty/__ Commands.java --- a/src/share/classes/com/sun/__tools/example/debug/tty/__ Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/__tools/example/debug/tty/__ Commands.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null",Objects.requireNonNull(__expr)); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {Objects.requireNonNull(expr),
MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("__grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {Objects.requireNonNull(expr),
strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/__annotation/__ IncompleteAnnotationException.__java --- a/src/share/classes/java/lang/__annotation/__ IncompleteAnnotationException.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/__annotation/__ IncompleteAnnotationException.__java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -25,6 +25,8 @@
package java.lang.annotation;
+import java.util.Objects; + /** * Thrown to indicate that a program has attempted to access an element of * an annotation type that was added to the annotation type definition after @@ -56,7 +58,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + Objects.requireNonNull(__elementName));
this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/__DateFormatSymbols.java --- a/src/share/classes/java/text/__DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/__DateFormatSymbols.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -594,7 +594,7 @@ */ public void setLocalPatternChars(String newLocalPatternChars) { // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(__); + localPatternChars = Objects.requireNonNull(__newLocalPatternChars); cachedHashCode = 0; }
diff -r e323c74edabd src/share/classes/javax/__management/modelmbean/__ DescriptorSupport.java --- a/src/share/classes/javax/__management/modelmbean/__ DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/__management/modelmbean/__ DescriptorSupport.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -43,13 +43,7 @@ import java.lang.reflect.Constructor;
import java.security.__AccessController; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.SortedMap; -import java.util.StringTokenizer; -import java.util.TreeMap; +import java.util.*; import java.util.logging.Level;
import javax.management.Descriptor; @@ -665,7 +659,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(__); + responseFields[i] = Objects.requireNonNull(__currElement.getKey()); } }
@@ -929,7 +923,7 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement.__getKey()).toString(), + if (validateField((Objects.__requireNonNull(currElement.__ getKey())),
(currElement.getValue()).__toString())) { continue; } else { diff -r e323c74edabd src/share/classes/javax/swing/__text/html/FormView.java --- a/src/share/classes/javax/__swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/__swing/text/html/FormView.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = Objects.requireNonNull(data); actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/_ _loops/Blit.java --- a/src/share/classes/sun/__java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/Blit.java Sun Apr 27 14:33:45 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/BlitBg.java --- a/src/share/classes/sun/__java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/BlitBg.java Sun Apr 27 14:33:45 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawGlyphList.java --- a/src/share/classes/sun/__java2d/loops/DrawGlyphList.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawGlyphList.__java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(__); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawGlyphListAA.java --- a/src/share/classes/sun/__java2d/loops/DrawGlyphListAA.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawGlyphListAA.__java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".__toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/__java2d/loops/DrawGlyphListLCD.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawGlyphListLCD.__java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".__toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawLine.java --- a/src/share/classes/sun/__java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawLine.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawParallelogram.java --- a/src/share/classes/sun/__java2d/loops/__DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/__DrawParallelogram.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".__toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawPath.java --- a/src/share/classes/sun/__java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawPath.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawPolygons.java --- a/src/share/classes/sun/__java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawPolygons.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString()__; + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawRect.java --- a/src/share/classes/sun/__java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawRect.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillParallelogram.java --- a/src/share/classes/sun/__java2d/loops/__FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/__FillParallelogram.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".__toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillPath.java --- a/src/share/classes/sun/__java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/FillPath.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillRect.java --- a/src/share/classes/sun/__java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/FillRect.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillSpans.java --- a/src/share/classes/sun/__java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/FillSpans.java Sun Apr 27 14:33:45 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/MaskBlit.java --- a/src/share/classes/sun/__java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/MaskBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/MaskFill.java --- a/src/share/classes/sun/__java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/MaskFill.java Sun Apr 27 14:33:45 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/ScaledBlit.java --- a/src/share/classes/sun/__java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/ScaledBlit.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/TransformBlit.java --- a/src/share/classes/sun/__java2d/loops/TransformBlit.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/TransformBlit.__java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(__); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/TransformHelper.java --- a/src/share/classes/sun/__java2d/loops/TransformHelper.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/TransformHelper.__java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".__toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/misc/__ ExtensionInfo.java --- a/src/share/classes/sun/misc/__ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/__ExtensionInfo.java Sun Apr 27 14:33:45 2014 -0300 @@ -25,6 +25,7 @@
package sun.misc;
+import java.util.Objects; import java.util.StringTokenizer; import java.util.jar.Attributes; import java.util.jar.Attributes.Name <http://java.util.jar.Attributes.Name>; @@ -260,11 +261,11 @@
// Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken().__toString()); + n = convertToken(Objects.__requireNonNull(stk.nextToken()__));
// Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken().__toString()); + m = convertToken(Objects.__requireNonNull(ttk.nextToken()__));
if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/__jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/__jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/__jconsole/inspector/Utils.java Sun Apr 27 14:33:45 2014 -0300 <tel:45%202014%20-0300> @@ -378,7 +378,7 @@ if (userInput instanceof XObject) { result[i] = ((XObject) userInput).getObject(); } else { - result[i] = createObjectFromString(params[__i].toString(), + result[i] = createObjectFromString(__Objects.requireNonNull(params[__i]), (String) userInput); } }
On Sun, Apr 27, 2014 at 1:09 PM, Remi Forax <forax@univ-mlv.fr <mailto:forax@univ-mlv.fr>> wrote:
On 04/27/2014 03:15 PM, Otávio Gonçalves de Santana wrote:
There is an issue that was opened to remove redundant calls of toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes.
[1]https://bugs.openjdk.java.__net/browse/JDK-8015470 <https://bugs.openjdk.java.net/browse/JDK-8015470>
Otavio, calling toString() on a String has the side effect to implicitly check that the reference is not null. Do you have checked that for each redundant call, the String can never be null ?
regards, Rémi
diff -r e323c74edabd src/share/classes/com/sun/__tools/example/debug/tty/__ Commands.java --- a/src/share/classes/com/sun/__tools/example/debug/tty/__ Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/__tools/example/debug/tty/__ Commands.java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null", expr); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {expr,
MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("__grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {expr,
strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/__annotation/__ IncompleteAnnotationException.__java --- a/src/share/classes/java/lang/__annotation/__ IncompleteAnnotationException.__java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/__annotation/__ IncompleteAnnotationException.__java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -56,7 +56,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + elementName);
this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/__DateFormatSymbols.java --- a/src/share/classes/java/text/__DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/__DateFormatSymbols.java Sat Apr 26 01:40:27 2014 -0300 @@ -593,8 +593,8 @@ * pattern characters. */ public void setLocalPatternChars(String newLocalPatternChars) { - // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(__); + + localPatternChars = Objects.requireNonNull( newLocalPatternChars); cachedHashCode = 0; }
diff -r e323c74edabd src/share/classes/javax/__management/modelmbean/__ DescriptorSupport.java --- a/src/share/classes/javax/__management/modelmbean/__ DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/__management/modelmbean/__ DescriptorSupport.java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -665,7 +665,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(__); + responseFields[i] = currElement.getKey(); } }
@@ -929,8 +929,8 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement.__getKey()).toString(), - (currElement.getValue()).__toString())) { + if (validateField((currElement.__getKey()), + (currElement.getValue()))) { continue; } else { if (MODELMBEAN_LOGGER.isLoggable(__Level.FINEST)) { diff -r e323c74edabd src/share/classes/javax/swing/ text/html/FormView.java --- a/src/share/classes/javax/__swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/__swing/text/html/FormView.java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -478,7 +478,7 @@
base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = data; actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/__loops/Blit.java --- a/src/share/classes/sun/__java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/Blit.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/BlitBg.java --- a/src/share/classes/sun/__java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/BlitBg.java Sat Apr 26 01:40:27 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphList.java --- a/src/share/classes/sun/__java2d/loops/DrawGlyphList.__ java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawGlyphList.__ java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(__); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphListAA.java --- a/src/share/classes/sun/__java2d/loops/DrawGlyphListAA._ _java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawGlyphListAA._ _java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".__toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/_ _loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/__java2d/loops/DrawGlyphListLCD. __java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawGlyphListLCD. __java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".__toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawLine.java --- a/src/share/classes/sun/__java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawLine.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/_ _loops/DrawParallelogram.java --- a/src/share/classes/sun/__java2d/loops/__ DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/__ DrawParallelogram.java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".__toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawPath.java --- a/src/share/classes/sun/__java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawPolygons.java --- a/src/share/classes/sun/__java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawPolygons.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString()__; + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/DrawRect.java --- a/src/share/classes/sun/__java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/DrawRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/_ _loops/FillParallelogram.java --- a/src/share/classes/sun/__java2d/loops/__ FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/__ FillParallelogram.java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".__toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillPath.java --- a/src/share/classes/sun/__java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/FillPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillRect.java --- a/src/share/classes/sun/__java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/FillRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/FillSpans.java --- a/src/share/classes/sun/__java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/FillSpans.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/MaskBlit.java --- a/src/share/classes/sun/__java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/MaskBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/MaskFill.java --- a/src/share/classes/sun/__java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/MaskFill.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/__loops/ScaledBlit.java --- a/src/share/classes/sun/__java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/ScaledBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformBlit.java --- a/src/share/classes/sun/__java2d/loops/TransformBlit.__ java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/TransformBlit.__ java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(__); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformHelper.java --- a/src/share/classes/sun/__java2d/loops/TransformHelper._ _java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/__java2d/loops/TransformHelper._ _java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".__toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/misc/__ExtensionInfo.java --- a/src/share/classes/sun/misc/__ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/__ExtensionInfo.java Sat Apr 26 01:40:27 2014 -0300 @@ -260,11 +260,11 @@
// Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken()._ _toString()); + n = convertToken(stk.nextToken());
// Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken()._ _toString()); + m = convertToken(ttk.nextToken());
if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/__ jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/__jconsole/inspector/Utils. java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/__jconsole/inspector/Utils. java Sat Apr 26 01:40:27 2014 -0300 <tel:27%202014%20-0300> @@ -378,7 +378,7 @@ if (userInput instanceof XObject) {
-- Atenciosamente. Otávio Gonçalves de Santana blog: http://otaviosantana.blogspot.com.br/ twitter: http://twitter.com/otaviojava site: http://www.otaviojava.com.br (11) 98255-3513
On 04/28/2014 08:57 AM, David Holmes wrote:
On 28/04/2014 1:05 PM, Otávio Gonçalves de Santana wrote:
In my opinion not, because Objects.requireNonNull is more readable than just string.toString. This way is more understandable which field is required and doesn't impact on performance.
An invocation of requireNonNull is potentially more expensive than the implicit null check that happens with foo.toString().
David -----
My thought was that these two would be inlined to the exact same thing, so I did a quick test to see what happens when you do foo.toString() versus Objects.requireNonNull(foo) on a set of randomly generated String[]'s with different amounts of null elements(0p: no null entries, 1p: 1% null entries etc): Benchmark Mode Samples Mean Mean error Units s.m.ThrowAwayBenchmark.nullToString0p thrpt 6 356653.044 3573.707 ops/ms s.m.ThrowAwayBenchmark.nullToString1p thrpt 6 353128.903 2764.102 ops/ms s.m.ThrowAwayBenchmark.nullToString10p thrpt 6 297956.571 9580.251 ops/ms s.m.ThrowAwayBenchmark.nullToString50p thrpt 6 158172.036 1893.096 ops/ms s.m.ThrowAwayBenchmark.nullToString100p thrpt 6 18194.614 472.091 ops/ms s.m.ThrowAwayBenchmark.requireNonNull0p thrpt 6 357855.126 2979.090 ops/ms s.m.ThrowAwayBenchmark.requireNonNull1p thrpt 6 67601.134 7004.689 ops/ms s.m.ThrowAwayBenchmark.requireNonNull10p thrpt 6 8150.595 538.970 ops/ms s.m.ThrowAwayBenchmark.requireNonNull50p thrpt 6 1604.919 220.903 ops/ms s.m.ThrowAwayBenchmark.requireNonNull100p thrpt 6 820.626 60.752 ops/ms Yikes! As long as the value is never null they're inlined nicely and neither have the upper hand performance-wise, but as soon as you get some null values, Objects.requireNonNull degenerates much faster than its foo.toString counterpart. I think this is a JIT issue - optimizing exception-paths might not be the highest priority, but Objects.requireNonNull is used pretty extensively in the JDK and my expectation would be that it shouldn't degrade performance when things actually are null now and then. /Claes
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)"; I conjecture that this, and other similar examples, are to avoid having the string be a compile-time constant that can be inlined into other files. Has anyone checked that there aren't any issues arising from changing this? On Mon, Apr 28, 2014 at 8:43 AM, Claes Redestad <claes.redestad@oracle.com>wrote:
On 04/28/2014 08:57 AM, David Holmes wrote:
On 28/04/2014 1:05 PM, Otávio Gonçalves de Santana wrote:
In my opinion not, because Objects.requireNonNull is more readable than just string.toString. This way is more understandable which field is required and doesn't impact on performance.
An invocation of requireNonNull is potentially more expensive than the implicit null check that happens with foo.toString().
David -----
My thought was that these two would be inlined to the exact same thing, so I did a quick test to see what happens when you do foo.toString() versus Objects.requireNonNull(foo) on a set of randomly generated String[]'s with different amounts of null elements(0p: no null entries, 1p: 1% null entries etc):
Benchmark Mode Samples Mean Mean error Units s.m.ThrowAwayBenchmark.nullToString0p thrpt 6 356653.044 3573.707 ops/ms s.m.ThrowAwayBenchmark.nullToString1p thrpt 6 353128.903 2764.102 ops/ms s.m.ThrowAwayBenchmark.nullToString10p thrpt 6 297956.571 9580.251 ops/ms s.m.ThrowAwayBenchmark.nullToString50p thrpt 6 158172.036 1893.096 ops/ms s.m.ThrowAwayBenchmark.nullToString100p thrpt 6 18194.614 472.091 ops/ms s.m.ThrowAwayBenchmark.requireNonNull0p thrpt 6 357855.126 2979.090 ops/ms s.m.ThrowAwayBenchmark.requireNonNull1p thrpt 6 67601.134 7004.689 ops/ms s.m.ThrowAwayBenchmark.requireNonNull10p thrpt 6 8150.595 538.970 ops/ms s.m.ThrowAwayBenchmark.requireNonNull50p thrpt 6 1604.919 220.903 ops/ms s.m.ThrowAwayBenchmark.requireNonNull100p thrpt 6 820.626 60.752 ops/ms
Yikes! As long as the value is never null they're inlined nicely and neither have the upper hand performance-wise, but as soon as you get some null values, Objects.requireNonNull degenerates much faster than its foo.toString counterpart. I think this is a JIT issue - optimizing exception-paths might not be the highest priority, but Objects.requireNonNull is used pretty extensively in the JDK and my expectation would be that it shouldn't degrade performance when things actually are null now and then.
/Claes
-- Louis Wasserman
I am quite sure that you are right that these were deliberate so I am adding Jim who was the author of all of the 2d ones to explain the intent. BTW Otávio, changes in 2D code like this should not slip by on the core-libs list. It ought to go to 2d-dev. -phil. On 4/28/2014 9:24 AM, Louis Wasserman wrote:
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
I conjecture that this, and other similar examples, are to avoid having the string be a compile-time constant that can be inlined into other files. Has anyone checked that there aren't any issues arising from changing this?
n 4/27/2014 6:15 AM, Otávio Gonçalves de Santana wrote:
There is an issue that was opened to remove redundant calls of toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes.
[1]https://bugs.openjdk.java.net/browse/JDK-8015470
diff -r e323c74edabd src/share/classes/javax/swing/text/html/FormView.java --- a/src/share/classes/javax/swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Sat Apr 26 01:40:27 2014 -0300 @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = data; actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/loops/Blit.java --- a/src/share/classes/sun/java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/Blit.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/BlitBg.java --- a/src/share/classes/sun/java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/BlitBg.java Sat Apr 26 01:40:27 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphList.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphList.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphList.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListAA.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Sat Apr 26 01:40:27 2014 -0300 @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawLine.java --- a/src/share/classes/sun/java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawLine.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawParallelogram.java --- a/src/share/classes/sun/java2d/loops/DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPath.java --- a/src/share/classes/sun/java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPolygons.java --- a/src/share/classes/sun/java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPolygons.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString(); + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawRect.java --- a/src/share/classes/sun/java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillParallelogram.java --- a/src/share/classes/sun/java2d/loops/FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillPath.java --- a/src/share/classes/sun/java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillRect.java --- a/src/share/classes/sun/java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillSpans.java --- a/src/share/classes/sun/java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillSpans.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskBlit.java --- a/src/share/classes/sun/java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskFill.java --- a/src/share/classes/sun/java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskFill.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/ScaledBlit.java --- a/src/share/classes/sun/java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/ScaledBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformBlit.java --- a/src/share/classes/sun/java2d/loops/TransformBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformHelper.java --- a/src/share/classes/sun/java2d/loops/TransformHelper.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformHelper.java Sat Apr 26 01:40:27 2014 -0300 @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
We refer to these strings as constants in many places. If you have: class Foo { static final String bar = "<really long string>"; } class Blah { // uses Foo.bar } Then Blah will incorporate that string by content, not by reference. I don't know why this is done this way, but Strings are special in that static final versions of them are included by value just the way that static final primitive types are. As a result, we had huge duplications of these strings all over the place. But, this only happens when you initialize it to a constant "..." string. If it is the result of a method call (or probably a calculation), then it ends up being treated like any static final object and is included by reference. Thus, appending .toString(); to the "..." constant foils the "include by value" processing in the compiler... ...jim On 4/28/14 2:47 PM, Phil Race wrote:
I am quite sure that you are right that these were deliberate so I am adding Jim who was the author of all of the 2d ones to explain the intent.
BTW Otávio, changes in 2D code like this should not slip by on the core-libs list. It ought to go to 2d-dev.
-phil.
On 4/28/2014 9:24 AM, Louis Wasserman wrote:
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
I conjecture that this, and other similar examples, are to avoid having the string be a compile-time constant that can be inlined into other files. Has anyone checked that there aren't any issues arising from changing this?
n 4/27/2014 6:15 AM, Otávio Gonçalves de Santana wrote:
There is an issue that was opened to remove redundant calls of toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes.
[1]https://bugs.openjdk.java.net/browse/JDK-8015470
diff -r e323c74edabd src/share/classes/javax/swing/text/html/FormView.java --- a/src/share/classes/javax/swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Sat Apr 26 01:40:27 2014 -0300 @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = data; actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/loops/Blit.java --- a/src/share/classes/sun/java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/Blit.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/BlitBg.java --- a/src/share/classes/sun/java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/BlitBg.java Sat Apr 26 01:40:27 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphList.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphList.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphList.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListAA.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Sat Apr 26 01:40:27 2014 -0300 @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawLine.java --- a/src/share/classes/sun/java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawLine.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawParallelogram.java --- a/src/share/classes/sun/java2d/loops/DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPath.java --- a/src/share/classes/sun/java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPolygons.java --- a/src/share/classes/sun/java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPolygons.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString(); + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawRect.java --- a/src/share/classes/sun/java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillParallelogram.java --- a/src/share/classes/sun/java2d/loops/FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillPath.java --- a/src/share/classes/sun/java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillRect.java --- a/src/share/classes/sun/java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillSpans.java --- a/src/share/classes/sun/java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillSpans.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskBlit.java --- a/src/share/classes/sun/java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskFill.java --- a/src/share/classes/sun/java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskFill.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/ScaledBlit.java --- a/src/share/classes/sun/java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/ScaledBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformBlit.java --- a/src/share/classes/sun/java2d/loops/TransformBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformHelper.java --- a/src/share/classes/sun/java2d/loops/TransformHelper.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformHelper.java Sat Apr 26 01:40:27 2014 -0300 @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
On 04/29/2014 12:43 AM, Jim Graham wrote:
We refer to these strings as constants in many places. If you have:
class Foo { static final String bar = "<really long string>"; }
class Blah { // uses Foo.bar }
Then Blah will incorporate that string by content, not by reference. I don't know why this is done this way, but Strings are special in that static final versions of them are included by value just the way that static final primitive types are. As a result, we had huge duplications of these strings all over the place.
yes and no. You have no duplication at runtime because the VM use a common dictionary for all constant strings (it's required by the Java spec) but you have duplication of the string at bytecode level. Basically the class file is bigger because the compiler duplicate the String as you said by content but you have no duplication at runtime because the VM dedup the constant strings using a dictionary.
But, this only happens when you initialize it to a constant "..." string. If it is the result of a method call (or probably a calculation), then it ends up being treated like any static final object and is included by reference. Thus, appending .toString(); to the "..." constant foils the "include by value" processing in the compiler...
yes, "foo" is a constant for the compiler but "foo".toString() is not. so by calling toString on a big String you save .class space. Also note that this is not an issue with Android because the Android class format (DEX) use one constant pool for several classes and not one constant pool by .class.
...jim
cheers, Rémi
On 4/28/14 2:47 PM, Phil Race wrote:
I am quite sure that you are right that these were deliberate so I am adding Jim who was the author of all of the 2d ones to explain the intent.
BTW Otávio, changes in 2D code like this should not slip by on the core-libs list. It ought to go to 2d-dev.
-phil.
On 4/28/2014 9:24 AM, Louis Wasserman wrote:
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
I conjecture that this, and other similar examples, are to avoid having the string be a compile-time constant that can be inlined into other files. Has anyone checked that there aren't any issues arising from changing this?
n 4/27/2014 6:15 AM, Otávio Gonçalves de Santana wrote:
There is an issue that was opened to remove redundant calls of toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes.
[1]https://bugs.openjdk.java.net/browse/JDK-8015470
diff -r e323c74edabd src/share/classes/javax/swing/text/html/FormView.java --- a/src/share/classes/javax/swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Sat Apr 26 01:40:27 2014 -0300 @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = data; actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/loops/Blit.java --- a/src/share/classes/sun/java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/Blit.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/BlitBg.java --- a/src/share/classes/sun/java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/BlitBg.java Sat Apr 26 01:40:27 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphList.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphList.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphList.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListAA.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Sat Apr 26 01:40:27 2014 -0300 @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawLine.java --- a/src/share/classes/sun/java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawLine.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawParallelogram.java --- a/src/share/classes/sun/java2d/loops/DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPath.java --- a/src/share/classes/sun/java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPolygons.java --- a/src/share/classes/sun/java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPolygons.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString(); + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawRect.java --- a/src/share/classes/sun/java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillParallelogram.java --- a/src/share/classes/sun/java2d/loops/FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillPath.java --- a/src/share/classes/sun/java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillRect.java --- a/src/share/classes/sun/java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillSpans.java --- a/src/share/classes/sun/java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillSpans.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskBlit.java --- a/src/share/classes/sun/java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskFill.java --- a/src/share/classes/sun/java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskFill.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/ScaledBlit.java --- a/src/share/classes/sun/java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/ScaledBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformBlit.java --- a/src/share/classes/sun/java2d/loops/TransformBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/TransformHelper.java --- a/src/share/classes/sun/java2d/loops/TransformHelper.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformHelper.java Sat Apr 26 01:40:27 2014 -0300 @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
On 04/28/2014 05:43 PM, Claes Redestad wrote:
On 04/28/2014 08:57 AM, David Holmes wrote:
On 28/04/2014 1:05 PM, Otávio Gonçalves de Santana wrote:
In my opinion not, because Objects.requireNonNull is more readable than just string.toString. This way is more understandable which field is required and doesn't impact on performance.
An invocation of requireNonNull is potentially more expensive than the implicit null check that happens with foo.toString().
David -----
My thought was that these two would be inlined to the exact same thing, so I did a quick test to see what happens when you do foo.toString() versus Objects.requireNonNull(foo) on a set of randomly generated String[]'s with different amounts of null elements(0p: no null entries, 1p: 1% null entries etc):
Benchmark Mode Samples Mean Mean error Units s.m.ThrowAwayBenchmark.nullToString0p thrpt 6 356653.044 3573.707 ops/ms s.m.ThrowAwayBenchmark.nullToString1p thrpt 6 353128.903 2764.102 ops/ms s.m.ThrowAwayBenchmark.nullToString10p thrpt 6 297956.571 9580.251 ops/ms s.m.ThrowAwayBenchmark.nullToString50p thrpt 6 158172.036 1893.096 ops/ms s.m.ThrowAwayBenchmark.nullToString100p thrpt 6 18194.614 472.091 ops/ms s.m.ThrowAwayBenchmark.requireNonNull0p thrpt 6 357855.126 2979.090 ops/ms s.m.ThrowAwayBenchmark.requireNonNull1p thrpt 6 67601.134 7004.689 ops/ms s.m.ThrowAwayBenchmark.requireNonNull10p thrpt 6 8150.595 538.970 ops/ms s.m.ThrowAwayBenchmark.requireNonNull50p thrpt 6 1604.919 220.903 ops/ms s.m.ThrowAwayBenchmark.requireNonNull100p thrpt 6 820.626 60.752 ops/ms
Yikes! As long as the value is never null they're inlined nicely and neither have the upper hand performance-wise, but as soon as you get some null values, Objects.requireNonNull degenerates much faster than its foo.toString counterpart. I think this is a JIT issue - optimizing exception-paths might not be the highest priority, but Objects.requireNonNull is used pretty extensively in the JDK and my expectation would be that it shouldn't degrade performance when things actually are null now and then.
/Claes
This is a know issue, I think it's not related to the way the JIT handle exception path but what is called 'profile pollution'. Hotspot JITs have two ways to do a null check, either do nothing (yes nothing) and let the system do a fault and come back from dead using a signal handler, this solution is named implicit null check or by doing an explicit null check, i.e a conditional jump. Implicit null check is faster but if the receiver is null, it cost you an harm, so the VM profiles receiver to remember if the receiver of each call can be null or not. The problem is that when you call foo.toString(), the profile information is associated with the instruction that does foo.toString() while if the call is Objects.requireNonNull(foo), the profile associated with the nullcheck is stored inside the method requireNonNull, so if one call to requireNonNull in the entire program throw a NPE, the profile inside requireNonNull now register that it may fail, so for the VM all calls to requireNonNull may fail. So currently you should not use requireNonNull is the value is not required to be null* So the problem is that Hotspot blindly trusts the recorded profile compared to the profile that can come from the arguments of a call. The good news is that recently some patches were included in the jdk9 tree to fix or at least mitigate that issue. cheers, Rémi * read that last sentence again, it seems very logical, no ?
On 2014-04-29 09:31, Remi Forax wrote:
On 04/28/2014 05:43 PM, Claes Redestad wrote:
On 04/28/2014 08:57 AM, David Holmes wrote:
On 28/04/2014 1:05 PM, Otávio Gonçalves de Santana wrote:
In my opinion not, because Objects.requireNonNull is more readable than just string.toString. This way is more understandable which field is required and doesn't impact on performance.
An invocation of requireNonNull is potentially more expensive than the implicit null check that happens with foo.toString().
David -----
My thought was that these two would be inlined to the exact same thing, so I did a quick test to see what happens when you do foo.toString() versus Objects.requireNonNull(foo) on a set of randomly generated String[]'s with different amounts of null elements(0p: no null entries, 1p: 1% null entries etc):
Benchmark Mode Samples Mean Mean error Units s.m.ThrowAwayBenchmark.nullToString0p thrpt 6 356653.044 3573.707 ops/ms s.m.ThrowAwayBenchmark.nullToString1p thrpt 6 353128.903 2764.102 ops/ms s.m.ThrowAwayBenchmark.nullToString10p thrpt 6 297956.571 9580.251 ops/ms s.m.ThrowAwayBenchmark.nullToString50p thrpt 6 158172.036 1893.096 ops/ms s.m.ThrowAwayBenchmark.nullToString100p thrpt 6 18194.614 472.091 ops/ms s.m.ThrowAwayBenchmark.requireNonNull0p thrpt 6 357855.126 2979.090 ops/ms s.m.ThrowAwayBenchmark.requireNonNull1p thrpt 6 67601.134 7004.689 ops/ms s.m.ThrowAwayBenchmark.requireNonNull10p thrpt 6 8150.595 538.970 ops/ms s.m.ThrowAwayBenchmark.requireNonNull50p thrpt 6 1604.919 220.903 ops/ms s.m.ThrowAwayBenchmark.requireNonNull100p thrpt 6 820.626 60.752 ops/ms
Yikes! As long as the value is never null they're inlined nicely and neither have the upper hand performance-wise, but as soon as you get some null values, Objects.requireNonNull degenerates much faster than its foo.toString counterpart. I think this is a JIT issue - optimizing exception-paths might not be the highest priority, but Objects.requireNonNull is used pretty extensively in the JDK and my expectation would be that it shouldn't degrade performance when things actually are null now and then.
/Claes
This is a know issue, I think it's not related to the way the JIT handle exception path but what is called 'profile pollution'. Hotspot JITs have two ways to do a null check, either do nothing (yes nothing) and let the system do a fault and come back from dead using a signal handler, this solution is named implicit null check or by doing an explicit null check, i.e a conditional jump. Implicit null check is faster but if the receiver is null, it cost you an harm, so the VM profiles receiver to remember if the receiver of each call can be null or not. The problem is that when you call foo.toString(), the profile information is associated with the instruction that does foo.toString() while if the call is Objects.requireNonNull(foo), the profile associated with the nullcheck is stored inside the method requireNonNull, so if one call to requireNonNull in the entire program throw a NPE, the profile inside requireNonNull now register that it may fail, so for the VM all calls to requireNonNull may fail. So currently you should not use requireNonNull is the value is not required to be null* I guess I should have given more details. :-) I ran my micros on a number of forked VMs to ensure I don't get excessive run-to-run variations, which among other things avoids profile pollution. Also I sloppily collected very few samples and only did minimal warmup after I saw that the micros produced scores that were orders of magnitude apart and the values stabilized after less than two seconds: Flags: -f 3 -wi 4 -i 2
When I run the micros sequentially in the same VM I see some added degradation for the exceptional cases, but the 0p cases still inline to the optimal(?) 360k ops/ms, so while it seems profile pollution might play in when provoked, HotSpot seems to manage these simple micros well enough.
So the problem is that Hotspot blindly trusts the recorded profile compared to the profile that can come from the arguments of a call. The good news is that recently some patches were included in the jdk9 tree to fix or at least mitigate that issue.
I've now run tests on JDK8 FCS and a recent internal build of JDK9 and see the same characteristics. How recently are we talking here? :-)
cheers, Rémi * read that last sentence again, it seems very logical, no ?
While your reading of the method name and suggested approach makes sense right now, the javadoc for Objects.requireNonNull states "this method is designed primarily for doing parameter validation in methods and constructors". To me, "parameter validation" suggests that we're dealing with unknowns and that there's at least some calculated risk that the input might be null, so the intent is really to encourage explicit fail-fast designs, no? I thus think it makes sense to try and ensure these methods have the same performance characteristics as when provoking an implicit null check by dereferencing an object. /Claes
On 04/29/2014 11:20 AM, Claes Redestad wrote:
On 2014-04-29 09:31, Remi Forax wrote:
On 04/28/2014 05:43 PM, Claes Redestad wrote:
On 04/28/2014 08:57 AM, David Holmes wrote:
On 28/04/2014 1:05 PM, Otávio Gonçalves de Santana wrote:
In my opinion not, because Objects.requireNonNull is more readable than just string.toString. This way is more understandable which field is required and doesn't impact on performance.
An invocation of requireNonNull is potentially more expensive than the implicit null check that happens with foo.toString().
David -----
My thought was that these two would be inlined to the exact same thing, so I did a quick test to see what happens when you do foo.toString() versus Objects.requireNonNull(foo) on a set of randomly generated String[]'s with different amounts of null elements(0p: no null entries, 1p: 1% null entries etc):
Benchmark Mode Samples Mean Mean error Units s.m.ThrowAwayBenchmark.nullToString0p thrpt 6 356653.044 3573.707 ops/ms s.m.ThrowAwayBenchmark.nullToString1p thrpt 6 353128.903 2764.102 ops/ms s.m.ThrowAwayBenchmark.nullToString10p thrpt 6 297956.571 9580.251 ops/ms s.m.ThrowAwayBenchmark.nullToString50p thrpt 6 158172.036 1893.096 ops/ms s.m.ThrowAwayBenchmark.nullToString100p thrpt 6 18194.614 472.091 ops/ms s.m.ThrowAwayBenchmark.requireNonNull0p thrpt 6 357855.126 2979.090 ops/ms s.m.ThrowAwayBenchmark.requireNonNull1p thrpt 6 67601.134 7004.689 ops/ms s.m.ThrowAwayBenchmark.requireNonNull10p thrpt 6 8150.595 538.970 ops/ms s.m.ThrowAwayBenchmark.requireNonNull50p thrpt 6 1604.919 220.903 ops/ms s.m.ThrowAwayBenchmark.requireNonNull100p thrpt 6 820.626 60.752 ops/ms
Yikes! As long as the value is never null they're inlined nicely and neither have the upper hand performance-wise, but as soon as you get some null values, Objects.requireNonNull degenerates much faster than its foo.toString counterpart. I think this is a JIT issue - optimizing exception-paths might not be the highest priority, but Objects.requireNonNull is used pretty extensively in the JDK and my expectation would be that it shouldn't degrade performance when things actually are null now and then.
/Claes
This is a know issue, I think it's not related to the way the JIT handle exception path but what is called 'profile pollution'. Hotspot JITs have two ways to do a null check, either do nothing (yes nothing) and let the system do a fault and come back from dead using a signal handler, this solution is named implicit null check or by doing an explicit null check, i.e a conditional jump. Implicit null check is faster but if the receiver is null, it cost you an harm, so the VM profiles receiver to remember if the receiver of each call can be null or not. The problem is that when you call foo.toString(), the profile information is associated with the instruction that does foo.toString() while if the call is Objects.requireNonNull(foo), the profile associated with the nullcheck is stored inside the method requireNonNull, so if one call to requireNonNull in the entire program throw a NPE, the profile inside requireNonNull now register that it may fail, so for the VM all calls to requireNonNull may fail. So currently you should not use requireNonNull is the value is not required to be null* I guess I should have given more details. :-) I ran my micros on a number of forked VMs to ensure I don't get excessive run-to-run variations, which among other things avoids profile pollution. Also I sloppily collected very few samples and only did minimal warmup after I saw that the micros produced scores that were orders of magnitude apart and the values stabilized after less than two seconds: Flags: -f 3 -wi 4 -i 2
When I run the micros sequentially in the same VM I see some added degradation for the exceptional cases, but the 0p cases still inline to the optimal(?) 360k ops/ms, so while it seems profile pollution might play in when provoked, HotSpot seems to manage these simple micros well enough.
Ok, so you have to take a look to the generated assembly code :) https://wiki.openjdk.java.net/display/HotSpot/PrintAssembly
So the problem is that Hotspot blindly trusts the recorded profile compared to the profile that can come from the arguments of a call. The good news is that recently some patches were included in the jdk9 tree to fix or at least mitigate that issue.
I've now run tests on JDK8 FCS and a recent internal build of JDK9 and see the same characteristics. How recently are we talking here? :-)
I don't know, I have seen the patches but not dive into the source yet, it's on my todo list, maybe it's not even activated by default.
cheers, Rémi * read that last sentence again, it seems very logical, no ?
While your reading of the method name and suggested approach makes sense right now, the javadoc for Objects.requireNonNull states "this method is designed primarily for doing parameter validation in methods and constructors". To me, "parameter validation" suggests that we're dealing with unknowns and that there's at least some calculated risk that the input might be null, so the intent is really to encourage explicit fail-fast designs, no?
The great Java Book is clear on that, you shall never try to recover from an exception that inherits from RuntimeException :) A runtime exception is an exception that developers throw at the head of their fellow developers to indicate that they should read the fucking manual.
I thus think it makes sense to try and ensure these methods have the same performance characteristics as when provoking an implicit null check by dereferencing an object.
as I said, I think it's time to take a look to the generated assembly code.
/Claes
regards, Rémi
On 2014-04-30 13:08, Remi Forax wrote:
On 04/29/2014 11:20 AM, Claes Redestad wrote:
On 2014-04-29 09:31, Remi Forax wrote:
On 04/28/2014 05:43 PM, Claes Redestad wrote:
On 04/28/2014 08:57 AM, David Holmes wrote:
On 28/04/2014 1:05 PM, Otávio Gonçalves de Santana wrote:
In my opinion not, because Objects.requireNonNull is more readable than just string.toString. This way is more understandable which field is required and doesn't impact on performance.
An invocation of requireNonNull is potentially more expensive than the implicit null check that happens with foo.toString().
David -----
My thought was that these two would be inlined to the exact same thing, so I did a quick test to see what happens when you do foo.toString() versus Objects.requireNonNull(foo) on a set of randomly generated String[]'s with different amounts of null elements(0p: no null entries, 1p: 1% null entries etc):
Benchmark Mode Samples Mean Mean error Units s.m.ThrowAwayBenchmark.nullToString0p thrpt 6 356653.044 3573.707 ops/ms s.m.ThrowAwayBenchmark.nullToString1p thrpt 6 353128.903 2764.102 ops/ms s.m.ThrowAwayBenchmark.nullToString10p thrpt 6 297956.571 9580.251 ops/ms s.m.ThrowAwayBenchmark.nullToString50p thrpt 6 158172.036 1893.096 ops/ms s.m.ThrowAwayBenchmark.nullToString100p thrpt 6 18194.614 472.091 ops/ms s.m.ThrowAwayBenchmark.requireNonNull0p thrpt 6 357855.126 2979.090 ops/ms s.m.ThrowAwayBenchmark.requireNonNull1p thrpt 6 67601.134 7004.689 ops/ms s.m.ThrowAwayBenchmark.requireNonNull10p thrpt 6 8150.595 538.970 ops/ms s.m.ThrowAwayBenchmark.requireNonNull50p thrpt 6 1604.919 220.903 ops/ms s.m.ThrowAwayBenchmark.requireNonNull100p thrpt 6 820.626 60.752 ops/ms
Yikes! As long as the value is never null they're inlined nicely and neither have the upper hand performance-wise, but as soon as you get some null values, Objects.requireNonNull degenerates much faster than its foo.toString counterpart. I think this is a JIT issue - optimizing exception-paths might not be the highest priority, but Objects.requireNonNull is used pretty extensively in the JDK and my expectation would be that it shouldn't degrade performance when things actually are null now and then.
/Claes
This is a know issue, I think it's not related to the way the JIT handle exception path but what is called 'profile pollution'. Hotspot JITs have two ways to do a null check, either do nothing (yes nothing) and let the system do a fault and come back from dead using a signal handler, this solution is named implicit null check or by doing an explicit null check, i.e a conditional jump. Implicit null check is faster but if the receiver is null, it cost you an harm, so the VM profiles receiver to remember if the receiver of each call can be null or not. The problem is that when you call foo.toString(), the profile information is associated with the instruction that does foo.toString() while if the call is Objects.requireNonNull(foo), the profile associated with the nullcheck is stored inside the method requireNonNull, so if one call to requireNonNull in the entire program throw a NPE, the profile inside requireNonNull now register that it may fail, so for the VM all calls to requireNonNull may fail. So currently you should not use requireNonNull is the value is not required to be null* I guess I should have given more details. :-) I ran my micros on a number of forked VMs to ensure I don't get excessive run-to-run variations, which among other things avoids profile pollution. Also I sloppily collected very few samples and only did minimal warmup after I saw that the micros produced scores that were orders of magnitude apart and the values stabilized after less than two seconds: Flags: -f 3 -wi 4 -i 2
When I run the micros sequentially in the same VM I see some added degradation for the exceptional cases, but the 0p cases still inline to the optimal(?) 360k ops/ms, so while it seems profile pollution might play in when provoked, HotSpot seems to manage these simple micros well enough.
Ok, so you have to take a look to the generated assembly code :) https://wiki.openjdk.java.net/display/HotSpot/PrintAssembly I've discussed the problem with some members of the compiler team who seem to think they have a pretty good idea about what's happening and thought I should file an RFE for this: https://bugs.openjdk.java.net/browse/JDK-8042127 - I suggest we continue the discussion there and/or start a new thread on this topic.
So the problem is that Hotspot blindly trusts the recorded profile compared to the profile that can come from the arguments of a call. The good news is that recently some patches were included in the jdk9 tree to fix or at least mitigate that issue.
I've now run tests on JDK8 FCS and a recent internal build of JDK9 and see the same characteristics. How recently are we talking here? :-)
I don't know, I have seen the patches but not dive into the source yet, it's on my todo list, maybe it's not even activated by default.
cheers, Rémi * read that last sentence again, it seems very logical, no ?
While your reading of the method name and suggested approach makes sense right now, the javadoc for Objects.requireNonNull states "this method is designed primarily for doing parameter validation in methods and constructors". To me, "parameter validation" suggests that we're dealing with unknowns and that there's at least some calculated risk that the input might be null, so the intent is really to encourage explicit fail-fast designs, no?
The great Java Book is clear on that, you shall never try to recover from an exception that inherits from RuntimeException :) A runtime exception is an exception that developers throw at the head of their fellow developers to indicate that they should read the fucking manual. I completely agree with you, however, I still think this is something that might happen in production systems because of reasons, so while we can't eliminate the penalty I still think it's a reasonable request to try and achieve a similarly graceful performance degradation as when doing implicit null checks.
/Claes
I thus think it makes sense to try and ensure these methods have the same performance characteristics as when provoking an implicit null check by dereferencing an object.
as I said, I think it's time to take a look to the generated assembly code.
/Claes
regards, Rémi
On 04/28/2014 07:57 AM, David Holmes wrote:
On 28/04/2014 1:05 PM, Otávio Gonçalves de Santana wrote:
In my opinion not, because Objects.requireNonNull is more readable than just string.toString. This way is more understandable which field is required and doesn't impact on performance.
An invocation of requireNonNull is potentially more expensive than the implicit null check that happens with foo.toString().
It's also potentially cheaper: a cbnz versus a fetch from memory with a few cycles pipeline delay. Andrew.
On 29/04/2014 7:40 PM, Andrew Haley wrote:
On 04/28/2014 07:57 AM, David Holmes wrote:
On 28/04/2014 1:05 PM, Otávio Gonçalves de Santana wrote:
In my opinion not, because Objects.requireNonNull is more readable than just string.toString. This way is more understandable which field is required and doesn't impact on performance.
An invocation of requireNonNull is potentially more expensive than the implicit null check that happens with foo.toString().
It's also potentially cheaper: a cbnz versus a fetch from memory with a few cycles pipeline delay.
Can you elaborate please? AFAIK implicit null checks have no overhead when the object reference is not null. Interpreted it is slower and the bytecode footprint is larger. IIRC the guidelines for use of requireNonNull in the JDK code was for replacing explicit null checks in precondition checking, not implicit ones. Anyway I don't find these changes compelling. YMMV. David -----
Andrew.
On 04/29/2014 10:58 AM, David Holmes wrote:
On 29/04/2014 7:40 PM, Andrew Haley wrote:
On 04/28/2014 07:57 AM, David Holmes wrote:
On 28/04/2014 1:05 PM, Otávio Gonçalves de Santana wrote:
In my opinion not, because Objects.requireNonNull is more readable than just string.toString. This way is more understandable which field is required and doesn't impact on performance.
An invocation of requireNonNull is potentially more expensive than the implicit null check that happens with foo.toString().
It's also potentially cheaper: a cbnz versus a fetch from memory with a few cycles pipeline delay.
Can you elaborate please? AFAIK implicit null checks have no overhead when the object reference is not null.
I'm sorry, that remark was too simplistic. If you have to read the data at that time, I agree. And it might do some useful prefetching. But if you're just checking the object is non-null it may be cheaper to do (o != null) . I have noticed that some Java code does (o.getClass()) or something similar to get an implicit check rather than if (o != null)...
Interpreted it is slower and the bytecode footprint is larger.
IIRC the guidelines for use of requireNonNull in the JDK code was for replacing explicit null checks in precondition checking, not implicit ones.
Anyway I don't find these changes compelling.
I agree. Andrew.
In general, I think Objects.requireNonNull() should often be considered idiomatic Java. If the constant-folding is to be avoided, I would prefer to see "foo".toString(); have a comment like "foo".toString(); // Avoid mandatory constant propagation -Joe On 04/27/2014 08:05 PM, Otávio Gonçalves de Santana wrote:
In my opinion not, because Objects.requireNonNull is more readable than just string.toString. This way is more understandable which field is required and doesn't impact on performance.
On Sun, Apr 27, 2014 at 11:33 PM, David Holmes <david.holmes@oracle.com>wrote:
On 28/04/2014 3:41 AM, Otávio Gonçalves de Santana wrote:
sorry. I tried answer and the message was twice. But Yes when has null pointer possibility I replaced to Objects.requireNonNull.
In my opinion that is making the code worse not better.
David -----
I am review the code again.
The code below:
diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sun Apr 27 14:33:45 2014 -0300 @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null",Objects.requireNonNull(expr)); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {Objects.requireNonNull(expr),
MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {Objects.requireNonNull(expr),
strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/annotation/IncompleteAnnotationException.java --- a/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/annotation/IncompleteAnnotationException.java Sun Apr 27 14:33:45 2014 -0300 @@ -25,6 +25,8 @@
package java.lang.annotation;
+import java.util.Objects; + /** * Thrown to indicate that a program has attempted to access an element of * an annotation type that was added to the annotation type definition after @@ -56,7 +58,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + Objects.requireNonNull(elementName));
this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/DateFormatSymbols.java --- a/src/share/classes/java/text/DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/DateFormatSymbols.java Sun Apr 27 14:33:45 2014 -0300 @@ -594,7 +594,7 @@ */ public void setLocalPatternChars(String newLocalPatternChars) { // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(); + localPatternChars = Objects.requireNonNull( newLocalPatternChars); cachedHashCode = 0; }
diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Sun Apr 27 14:33:45 2014 -0300 @@ -43,13 +43,7 @@ import java.lang.reflect.Constructor;
import java.security.AccessController; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.SortedMap; -import java.util.StringTokenizer; -import java.util.TreeMap; +import java.util.*; import java.util.logging.Level;
import javax.management.Descriptor; @@ -665,7 +659,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(); + responseFields[i] = Objects.requireNonNull(currElement.getKey()); } }
@@ -929,7 +923,7 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement.getKey()).toString(), + if (validateField((Objects.requireNonNull(currElement.getKey())),
(currElement.getValue()).toString())) { continue; } else { diff -r e323c74edabd src/share/classes/javax/swing/ text/html/FormView.java --- a/src/share/classes/javax/swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Sun Apr 27 14:33:45 2014 -0300 @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = Objects.requireNonNull(data); actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/loops/Blit.java --- a/src/share/classes/sun/java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/Blit.java Sun Apr 27 14:33:45 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/BlitBg.java --- a/src/share/classes/sun/java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/BlitBg.java Sun Apr 27 14:33:45 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphList.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphList.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphList.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphListAA.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Sun Apr 27 14:33:45 2014 -0300 @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawLine.java --- a/src/share/classes/sun/java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawLine.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawParallelogram.java --- a/src/share/classes/sun/java2d/loops/DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawParallelogram.java Sun Apr 27 14:33:45 2014 -0300 @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPath.java --- a/src/share/classes/sun/java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPath.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPolygons.java --- a/src/share/classes/sun/java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPolygons.java Sun Apr 27 14:33:45 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString(); + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawRect.java --- a/src/share/classes/sun/java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawRect.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillParallelogram.java --- a/src/share/classes/sun/java2d/loops/FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillParallelogram.java Sun Apr 27 14:33:45 2014 -0300 @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillPath.java --- a/src/share/classes/sun/java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillPath.java Sun Apr 27 14:33:45 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillRect.java --- a/src/share/classes/sun/java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillRect.java Sun Apr 27 14:33:45 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillSpans.java --- a/src/share/classes/sun/java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillSpans.java Sun Apr 27 14:33:45 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskBlit.java --- a/src/share/classes/sun/java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskFill.java --- a/src/share/classes/sun/java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskFill.java Sun Apr 27 14:33:45 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/ScaledBlit.java --- a/src/share/classes/sun/java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/ScaledBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformBlit.java --- a/src/share/classes/sun/java2d/loops/TransformBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformBlit.java Sun Apr 27 14:33:45 2014 -0300 @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformHelper.java --- a/src/share/classes/sun/java2d/loops/TransformHelper.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformHelper.java Sun Apr 27 14:33:45 2014 -0300 @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sun Apr 27 14:33:45 2014 -0300 @@ -25,6 +25,7 @@
package sun.misc;
+import java.util.Objects; import java.util.StringTokenizer; import java.util.jar.Attributes; import java.util.jar.Attributes.Name; @@ -260,11 +261,11 @@
// Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken().toString()); + n = convertToken(Objects.requireNonNull(stk.nextToken()));
// Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken().toString()); + m = convertToken(Objects.requireNonNull(ttk.nextToken()));
if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sun Apr 27 14:33:45 2014 -0300 @@ -378,7 +378,7 @@ if (userInput instanceof XObject) { result[i] = ((XObject) userInput).getObject(); } else { - result[i] = createObjectFromString(params[i].toString(), + result[i] = createObjectFromString(Objects.requireNonNull(params[i]), (String) userInput); } }
On Sun, Apr 27, 2014 at 1:09 PM, Remi Forax <forax@univ-mlv.fr> wrote:
On 04/27/2014 03:15 PM, Otávio Gonçalves de Santana wrote:
There is an issue that was opened to remove redundant calls of
toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes.
Otavio, calling toString() on a String has the side effect to implicitly check that the reference is not null. Do you have checked that for each redundant call, the String can never be null ?
regards, Rémi
diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sat Apr 26 01:40:27 2014 -0300 @@ -1653,20 +1653,20 @@ String expr = t.nextToken(""); Value val = evaluate(expr); if (val == null) { - MessageOutput.println("expr is null", expr.toString()); + MessageOutput.println("expr is null", expr); } else if (dumpObject && (val instanceof ObjectReference) && !(val instanceof StringReference)) { ObjectReference obj = (ObjectReference)val; ReferenceType refType = obj.referenceType(); MessageOutput.println("expr is value", - new Object [] {expr.toString(), + new Object [] {expr,
MessageOutput.format("grouping begin character")}); dump(obj, refType, refType); MessageOutput.println("grouping end character"); } else { String strVal = getStringValue(); if (strVal != null) { - MessageOutput.println("expr is value", new Object [] {expr.toString(), + MessageOutput.println("expr is value", new Object [] {expr,
strVal}); } } diff -r e323c74edabd src/share/classes/java/lang/annotation/IncompleteAnnotationException. java --- a/src/share/classes/java/lang/annotation/IncompleteAnnotationException. java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/annotation/IncompleteAnnotationException. java Sat Apr 26 01:40:27 2014 -0300 @@ -56,7 +56,7 @@ Class<? extends Annotation> annotationType, String elementName) { super(annotationType.getName() + " missing element " + - elementName.toString()); + elementName);
this.annotationType = annotationType; this.elementName = elementName; diff -r e323c74edabd src/share/classes/java/text/DateFormatSymbols.java --- a/src/share/classes/java/text/DateFormatSymbols.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/text/DateFormatSymbols.java Sat Apr 26 01:40:27 2014 -0300 @@ -593,8 +593,8 @@ * pattern characters. */ public void setLocalPatternChars(String newLocalPatternChars) { - // Call toString() to throw an NPE in case the argument is null - localPatternChars = newLocalPatternChars.toString(); + + localPatternChars = Objects.requireNonNull( newLocalPatternChars); cachedHashCode = 0; }
diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/ DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/ DescriptorSupport.java Sat Apr 26 01:40:27 2014 -0300 @@ -665,7 +665,7 @@ "getFieldNames()", "Field is null"); } } else { - responseFields[i] = currElement.getKey().toString(); + responseFields[i] = currElement.getKey(); } }
@@ -929,8 +929,8 @@ if (currElement != null) { if (currElement.getValue() != null) { // validate the field valued... - if (validateField((currElement. getKey()).toString(), - (currElement.getValue()).toString())) { + if (validateField((currElement.getKey()), + (currElement.getValue()))) { continue; } else { if (MODELMBEAN_LOGGER.isLoggable( Level.FINEST)) { diff -r e323c74edabd src/share/classes/javax/swing/ text/html/FormView.java --- a/src/share/classes/javax/swing/text/html/FormView.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/text/html/FormView.java Sat Apr 26 01:40:27 2014 -0300 @@ -478,7 +478,7 @@ base.getPort(), base.getFile()) : new URL(base, action); if (!isPostMethod) { - String query = data.toString(); + String query = data; actionURL = new URL(actionURL + "?" + query); } } catch (MalformedURLException e) { diff -r e323c74edabd src/share/classes/sun/java2d/loops/Blit.java --- a/src/share/classes/sun/java2d/loops/Blit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/Blit.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,7 +50,7 @@
public class Blit extends GraphicsPrimitive { - public static final String methodSignature = "Blit(...)".toString(); + public static final String methodSignature = "Blit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/BlitBg.java --- a/src/share/classes/sun/java2d/loops/BlitBg.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/BlitBg.java Sat Apr 26 01:40:27 2014 -0300 @@ -54,7 +54,7 @@ */ public class BlitBg extends GraphicsPrimitive { - public static final String methodSignature = "BlitBg(...)".toString(); + public static final String methodSignature = "BlitBg(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphList.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphList.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphList.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphList extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphList(...)".toString(); + public final static String methodSignature = "DrawGlyphList(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawGlyphListAA.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListAA.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ */ public class DrawGlyphListAA extends GraphicsPrimitive {
- public final static String methodSignature = "DrawGlyphListAA(...)".toString(); + public final static String methodSignature = "DrawGlyphListAA(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java --- a/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawGlyphListLCD.java Sat Apr 26 01:40:27 2014 -0300 @@ -40,7 +40,7 @@ public class DrawGlyphListLCD extends GraphicsPrimitive {
public final static String - methodSignature = "DrawGlyphListLCD(...)".toString(); + methodSignature = "DrawGlyphListLCD(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawLine.java --- a/src/share/classes/sun/java2d/loops/DrawLine.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawLine.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawLine extends GraphicsPrimitive { - public final static String methodSignature = "DrawLine(...)".toString(); + public final static String methodSignature = "DrawLine(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawParallelogram.java --- a/src/share/classes/sun/java2d/loops/DrawParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -43,7 +43,7 @@ public class DrawParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "DrawParallelogram(...)".toString(); + "DrawParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawPath.java --- a/src/share/classes/sun/java2d/loops/DrawPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class DrawPath extends GraphicsPrimitive {
public final static String methodSignature = - "DrawPath(...)".toString(); + "DrawPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/DrawPolygons.java --- a/src/share/classes/sun/java2d/loops/DrawPolygons.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawPolygons.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ */ public class DrawPolygons extends GraphicsPrimitive { - public final static String methodSignature = "DrawPolygons(...)".toString(); + public final static String methodSignature = "DrawPolygons(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/DrawRect.java --- a/src/share/classes/sun/java2d/loops/DrawRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/DrawRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class DrawRect extends GraphicsPrimitive { - public final static String methodSignature = "DrawRect(...)".toString(); + public final static String methodSignature = "DrawRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillParallelogram.java --- a/src/share/classes/sun/java2d/loops/FillParallelogram.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillParallelogram.java Sat Apr 26 01:40:27 2014 -0300 @@ -41,7 +41,7 @@ public class FillParallelogram extends GraphicsPrimitive { public final static String methodSignature = - "FillParallelogram(...)".toString(); + "FillParallelogram(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillPath.java --- a/src/share/classes/sun/java2d/loops/FillPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillPath.java Sat Apr 26 01:40:27 2014 -0300 @@ -39,7 +39,7 @@ public class FillPath extends GraphicsPrimitive {
public final static String methodSignature = - "FillPath(...)".toString(); + "FillPath(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillRect.java --- a/src/share/classes/sun/java2d/loops/FillRect.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillRect.java Sat Apr 26 01:40:27 2014 -0300 @@ -44,7 +44,7 @@ */ public class FillRect extends GraphicsPrimitive { - public final static String methodSignature = "FillRect(...)".toString(); + public final static String methodSignature = "FillRect(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/FillSpans.java --- a/src/share/classes/sun/java2d/loops/FillSpans.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/FillSpans.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@ */ public class FillSpans extends GraphicsPrimitive { - public final static String methodSignature = "FillSpans(...)".toString(); + public final static String methodSignature = "FillSpans(...)";
public final static int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskBlit.java --- a/src/share/classes/sun/java2d/loops/MaskBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -48,7 +48,7 @@
public class MaskBlit extends GraphicsPrimitive { - public static final String methodSignature = "MaskBlit(...)".toString(); + public static final String methodSignature = "MaskBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/MaskFill.java --- a/src/share/classes/sun/java2d/loops/MaskFill.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/MaskFill.java Sat Apr 26 01:40:27 2014 -0300 @@ -50,11 +50,11 @@ */ public class MaskFill extends GraphicsPrimitive { - public static final String methodSignature = "MaskFill(...)".toString(); + public static final String methodSignature = "MaskFill(...)"; public static final String fillPgramSignature = - "FillAAPgram(...)".toString(); + "FillAAPgram(...)"; public static final String drawPgramSignature = - "DrawAAPgram(...)".toString(); + "DrawAAPgram(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/loops/ScaledBlit.java --- a/src/share/classes/sun/java2d/loops/ScaledBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/ScaledBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -45,7 +45,7 @@
public class ScaledBlit extends GraphicsPrimitive { - public static final String methodSignature = "ScaledBlit(...)".toString(); + public static final String methodSignature = "ScaledBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformBlit.java --- a/src/share/classes/sun/java2d/loops/TransformBlit.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformBlit.java Sat Apr 26 01:40:27 2014 -0300 @@ -47,7 +47,7 @@ public class TransformBlit extends GraphicsPrimitive { public static final String methodSignature = - "TransformBlit(...)".toString(); + "TransformBlit(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/java2d/ loops/TransformHelper.java --- a/src/share/classes/sun/java2d/loops/TransformHelper.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/java2d/loops/TransformHelper.java Sat Apr 26 01:40:27 2014 -0300 @@ -46,7 +46,7 @@ public class TransformHelper extends GraphicsPrimitive { public static final String methodSignature = - "TransformHelper(...)".toString(); + "TransformHelper(...)";
public static final int primTypeID = makePrimTypeID();
diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sat Apr 26 01:40:27 2014 -0300 @@ -260,11 +260,11 @@
// Convert token into meaning number for comparision if (stk.hasMoreTokens()) - n = convertToken(stk.nextToken().toString()); + n = convertToken(stk.nextToken());
// Convert token into meaning number for comparision if (ttk.hasMoreTokens()) - m = convertToken(ttk.nextToken().toString()); + m = convertToken(ttk.nextToken());
if (n > m) return 1; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sat Apr 26 01:40:27 2014 -0300 @@ -378,7 +378,7 @@ if (userInput instanceof XObject) { result[i] = ((XObject) userInput).getObject(); } else { - result[i] = createObjectFromString(params[ i].toString(), + result[i] = createObjectFromString(params[i], (String) userInput); } }
Hi Otávio, Is there anyway you can experiment with publishing a webrev to dropbox or github, preferably so that it is browsable, otherwise the zip? Unfortunately the patches are hard to review, especially in response to reviews where code is updated. I realize until you have an openjdk account you are somewhat in "no-mans" land, but i strongly suspect using one of the above mentioned services is fairly easy to use, and therefore will make it easier to accept such patches. Paul. On Apr 27, 2014, at 3:15 PM, Otávio Gonçalves de Santana <otaviopolianasantana@gmail.com> wrote:
There is an issue that was opened to remove redundant calls of toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes.
Done. Link: https://dl.dropboxusercontent.com/u/16109193/open_jdk/string_to_string_unces... On Mon, Apr 28, 2014 at 4:34 AM, Paul Sandoz <paul.sandoz@oracle.com> wrote:
Hi Otávio,
Is there anyway you can experiment with publishing a webrev to dropbox or github, preferably so that it is browsable, otherwise the zip?
Unfortunately the patches are hard to review, especially in response to reviews where code is updated.
I realize until you have an openjdk account you are somewhat in "no-mans" land, but i strongly suspect using one of the above mentioned services is fairly easy to use, and therefore will make it easier to accept such patches.
Paul.
On Apr 27, 2014, at 3:15 PM, Otávio Gonçalves de Santana < otaviopolianasantana@gmail.com> wrote:
There is an issue that was opened to remove redundant calls of toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes.
-- Atenciosamente. Otávio Gonçalves de Santana blog: http://otaviosantana.blogspot.com.br/ twitter: http://twitter.com/otaviojava site: http://www.otaviojava.com.br (11) 98255-3513
I have to say that the expected NPE is quite "hidden" in the current code. I am actually surprised someone was able to catch that. The use of Objects.requreNonNull() is way more clear and I prefer that approach for the sake of clarity. On Mon, Apr 28, 2014 at 8:28 AM, Otávio Gonçalves de Santana < otaviojava@java.net> wrote:
Done. Link:
https://dl.dropboxusercontent.com/u/16109193/open_jdk/string_to_string_unces...
On Mon, Apr 28, 2014 at 4:34 AM, Paul Sandoz <paul.sandoz@oracle.com> wrote:
Hi Otávio,
Is there anyway you can experiment with publishing a webrev to dropbox or github, preferably so that it is browsable, otherwise the zip?
Unfortunately the patches are hard to review, especially in response to reviews where code is updated.
I realize until you have an openjdk account you are somewhat in "no-mans" land, but i strongly suspect using one of the above mentioned services is fairly easy to use, and therefore will make it easier to accept such patches.
Paul.
On Apr 27, 2014, at 3:15 PM, Otávio Gonçalves de Santana < otaviopolianasantana@gmail.com> wrote:
There is an issue that was opened to remove redundant calls of toString() on String objects. [1] I went deep on all JVM sources and I found all, 32 changes.
-- Atenciosamente.
Otávio Gonçalves de Santana
blog: http://otaviosantana.blogspot.com.br/ twitter: http://twitter.com/otaviojava site: http://www.otaviojava.com.br (11) 98255-3513
-- Cheers, Paul
participants (12)
-
Andrew Haley
-
Claes Redestad
-
David Holmes
-
Jim Graham
-
Joe Darcy
-
Louis Wasserman
-
Otávio Gonçalves de Santana
-
Otávio Gonçalves de Santana
-
Paul Benedict
-
Paul Sandoz
-
Phil Race
-
Remi Forax