On 4/26/21 1:27 PM, Сергей Цыпанов wrote:
On Mon, 26 Apr 2021 08:45:52 GMT, Alan Bateman <al...@openjdk.org> wrote:

@AlanBateman if DL is not responding, will it be ok to just revert the changes 
related to `java.util.concurrent`?
That should be fine, the null check in Objects.equals is benign with these 
usages.
One more thing I'm thinking about (not to be done in this PR of course) is to 
move call to `String.intern()` from where it is now in `Class.getPackageName()`

public String getPackageName() {
     String pn = this.packageName;
     if (pn == null) {
         Class<?> c = this;
         while (c.isArray()) {
             c = c.getComponentType();
         }
         if (c.isPrimitive()) {
             pn = "java.lang";
         } else {
             String cn = c.getName();
             int dot = cn.lastIndexOf('.');
             pn = (dot != -1) ? cn.substring(0, dot).intern() : "";    // <---
         }
         this.packageName = pn;
     }
     return pn;
}

to `packageName` field assignement like

this.packageName = pn.intern();

this would add two more Strings (`""` and `"java.lang"`) into string table and 
allow to avoid `String.equals()` in favour of `==` call when comparing package names. What do you 
think?


I think this is not needed as string constants are all already interned strings (guaranteed by VM). Also be careful not to return a string which is not interned (which would happen if you did what you are proposing above).


Regards, Peter



-------------

PR: https://git.openjdk.java.net/jdk/pull/3571

Reply via email to