< prev index next >
src/java.base/share/classes/java/lang/StringCoding.java
Print this page
rev 16912 : 8177631: Outdated performance advice in StringCoding
Reviewed-by: duke
@@ -270,12 +270,11 @@
// gc should be able to take care of them well. But the best approach
// is still not to generate them if not really necessary.
// (2)The defensive copy of the input byte/char[] has a big performance
// impact, as well as the outgoing result byte/char[]. Need to do the
// optimization check of (sm==null && classLoader0==null) for both.
- // (3)getClass().getClassLoader0() is expensive
- // (4)There might be a timing gap in isTrusted setting. getClassLoader0()
+ // (3)There might be a timing gap in isTrusted setting. getClassLoader0()
// is only checked (and then isTrusted gets set) when (SM==null). It is
// possible that the SM==null for now but then SM is NOT null later
// when safeTrim() is invoked...the "safe" way to do is to redundant
// check (... && (isTrusted || SM == null || getClassLoader0())) in trim
// but it then can be argued that the SM is null when the operation
@@ -297,12 +296,12 @@
}
int en = scale(len, cd.maxCharsPerByte());
if (len == 0) {
return new Result().with();
}
- if (System.getSecurityManager() != null &&
- cs.getClass().getClassLoader0() != null) {
+ if (cs.getClass().getClassLoader0() != null &&
+ System.getSecurityManager() != null) {
ba = Arrays.copyOfRange(ba, off, off + len);
off = 0;
}
cd.onMalformedInput(CodingErrorAction.REPLACE)
.onUnmappableCharacter(CodingErrorAction.REPLACE)
@@ -607,12 +606,12 @@
int en = scale(len, ce.maxBytesPerChar());
byte[] ba = new byte[en];
if (len == 0) {
return ba;
}
- boolean isTrusted = System.getSecurityManager() == null ||
- cs.getClass().getClassLoader0() == null;
+ boolean isTrusted = cs.getClass().getClassLoader0() == null ||
+ System.getSecurityManager() == null;
ce.onMalformedInput(CodingErrorAction.REPLACE)
.onUnmappableCharacter(CodingErrorAction.REPLACE)
.reset();
if (ce instanceof ArrayEncoder) {
if (!isTrusted) {
< prev index next >