You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by eb...@apache.org on 2017/05/10 14:27:21 UTC
svn commit: r1794726 - in /tomcat/trunk/java: javax/servlet/http/
org/apache/catalina/connector/ org/apache/catalina/core/
org/apache/catalina/valves/rewrite/ org/apache/coyote/http11/
org/apache/jasper/runtime/ org/apache/naming/factory/webservices/ o...
Author: ebourg
Date: Wed May 10 14:27:20 2017
New Revision: 1794726
URL: http://svn.apache.org/viewvc?rev=1794726&view=rev
Log:
Optimized array copies with Arrays.copyOf() and System.arraycopy()
Modified:
tomcat/trunk/java/javax/servlet/http/HttpUtils.java
tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
tomcat/trunk/java/org/apache/catalina/connector/Request.java
tomcat/trunk/java/org/apache/catalina/connector/Response.java
tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
tomcat/trunk/java/org/apache/catalina/core/StandardHost.java
tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteRule.java
tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java
tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java
tomcat/trunk/java/org/apache/jasper/runtime/PageContextImpl.java
tomcat/trunk/java/org/apache/naming/factory/webservices/ServiceRefFactory.java
tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/SecurityCollection.java
tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
tomcat/trunk/java/org/apache/tomcat/util/digester/CallMethodRule.java
Modified: tomcat/trunk/java/javax/servlet/http/HttpUtils.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/http/HttpUtils.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/http/HttpUtils.java (original)
+++ tomcat/trunk/java/javax/servlet/http/HttpUtils.java Wed May 10 14:27:20 2017
@@ -18,6 +18,7 @@
package javax.servlet.http;
import java.io.IOException;
+import java.util.Arrays;
import java.util.Hashtable;
import java.util.ResourceBundle;
import java.util.StringTokenizer;
@@ -101,9 +102,7 @@ public class HttpUtils {
String val = parseName(pair.substring(pos+1, pair.length()), sb);
if (ht.containsKey(key)) {
String oldVals[] = ht.get(key);
- valArray = new String[oldVals.length + 1];
- for (int i = 0; i < oldVals.length; i++)
- valArray[i] = oldVals[i];
+ valArray = Arrays.copyOf(oldVals, oldVals.length + 1);
valArray[oldVals.length] = val;
} else {
valArray = new String[1];
Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Wed May 10 14:27:20 2017
@@ -1297,8 +1297,6 @@ public class CoyoteAdapter implements Ad
* @param len Length
*/
protected static void copyBytes(byte[] b, int dest, int src, int len) {
- for (int pos = 0; pos < len; pos++) {
- b[pos + dest] = b[pos + src];
- }
+ System.arraycopy(b, src, b, dest, len);
}
}
Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Wed May 10 14:27:20 2017
@@ -1775,8 +1775,8 @@ public class Request implements HttpServ
}
Cookie[] newCookies = new Cookie[size + 1];
- for (int i = 0; i < size; i++) {
- newCookies[i] = cookies[i];
+ if (cookies != null) {
+ System.arraycopy(cookies, 0, newCookies, 0, size);
}
newCookies[size] = cookie;
Modified: tomcat/trunk/java/org/apache/catalina/connector/Response.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Response.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Response.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Response.java Wed May 10 14:27:20 2017
@@ -1799,9 +1799,7 @@ public class Response implements HttpSer
}
private void copyChars(char[] c, int dest, int src, int len) {
- for (int pos = 0; pos < len; pos++) {
- c[pos + dest] = c[pos + src];
- }
+ System.arraycopy(c, src, c, dest, len);
}
Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Wed May 10 14:27:20 2017
@@ -2806,10 +2806,7 @@ public class StandardContext extends Con
// Add this constraint to the set for our web application
synchronized (constraintsLock) {
- SecurityConstraint results[] =
- new SecurityConstraint[constraints.length + 1];
- for (int i = 0; i < constraints.length; i++)
- results[i] = constraints[i];
+ SecurityConstraint[] results = Arrays.copyOf(constraints, constraints.length + 1);
results[constraints.length] = constraint;
constraints = results;
}
@@ -3064,9 +3061,7 @@ public class StandardContext extends Con
public void addSecurityRole(String role) {
synchronized (securityRolesLock) {
- String results[] =new String[securityRoles.length + 1];
- for (int i = 0; i < securityRoles.length; i++)
- results[i] = securityRoles[i];
+ String[] results = Arrays.copyOf(securityRoles, securityRoles.length + 1);
results[securityRoles.length] = role;
securityRoles = results;
}
@@ -3125,9 +3120,7 @@ public class StandardContext extends Con
public void addWatchedResource(String name) {
synchronized (watchedResourcesLock) {
- String results[] = new String[watchedResources.length + 1];
- for (int i = 0; i < watchedResources.length; i++)
- results[i] = watchedResources[i];
+ String[] results = Arrays.copyOf(watchedResources, watchedResources.length + 1);
results[watchedResources.length] = name;
watchedResources = results;
}
@@ -3151,9 +3144,7 @@ public class StandardContext extends Con
welcomeFiles = new String[0];
setReplaceWelcomeFiles(false);
}
- String results[] =new String[welcomeFiles.length + 1];
- for (int i = 0; i < welcomeFiles.length; i++)
- results[i] = welcomeFiles[i];
+ String[] results = Arrays.copyOf(welcomeFiles, welcomeFiles.length + 1);
results[welcomeFiles.length] = name;
welcomeFiles = results;
}
@@ -3172,9 +3163,7 @@ public class StandardContext extends Con
public void addWrapperLifecycle(String listener) {
synchronized (wrapperLifecyclesLock) {
- String results[] =new String[wrapperLifecycles.length + 1];
- for (int i = 0; i < wrapperLifecycles.length; i++)
- results[i] = wrapperLifecycles[i];
+ String[] results = Arrays.copyOf(wrapperLifecycles, wrapperLifecycles.length + 1);
results[wrapperLifecycles.length] = listener;
wrapperLifecycles = results;
}
@@ -3193,9 +3182,7 @@ public class StandardContext extends Con
public void addWrapperListener(String listener) {
synchronized (wrapperListenersLock) {
- String results[] =new String[wrapperListeners.length + 1];
- for (int i = 0; i < wrapperListeners.length; i++)
- results[i] = wrapperListeners[i];
+ String[] results = Arrays.copyOf(wrapperListeners, wrapperListeners.length + 1);
results[wrapperListeners.length] = listener;
wrapperListeners = results;
}
Modified: tomcat/trunk/java/org/apache/catalina/core/StandardHost.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardHost.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardHost.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardHost.java Wed May 10 14:27:20 2017
@@ -19,6 +19,7 @@ package org.apache.catalina.core;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -675,9 +676,7 @@ public class StandardHost extends Contai
return;
}
// Add this alias to the list
- String newAliases[] = new String[aliases.length + 1];
- for (int i = 0; i < aliases.length; i++)
- newAliases[i] = aliases[i];
+ String newAliases[] = Arrays.copyOf(aliases, aliases.length + 1);
newAliases[aliases.length] = alias;
aliases = newAliases;
}
Modified: tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteRule.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteRule.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteRule.java (original)
+++ tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteRule.java Wed May 10 14:27:20 2017
@@ -17,6 +17,7 @@
package org.apache.catalina.valves.rewrite;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -67,10 +68,7 @@ public class RewriteRule {
}
public void addCondition(RewriteCond condition) {
- RewriteCond[] conditions = new RewriteCond[this.conditions.length + 1];
- for (int i = 0; i < this.conditions.length; i++) {
- conditions[i] = this.conditions[i];
- }
+ RewriteCond[] conditions = Arrays.copyOf(this.conditions, this.conditions.length + 1);
conditions[this.conditions.length] = condition;
this.conditions = conditions;
}
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java Wed May 10 14:27:20 2017
@@ -20,6 +20,7 @@ import java.io.EOFException;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
import org.apache.coyote.InputBuffer;
import org.apache.coyote.Request;
@@ -182,10 +183,7 @@ public class Http11InputBuffer implement
throw new NullPointerException(sm.getString("iib.filter.npe"));
}
- InputFilter[] newFilterLibrary = new InputFilter[filterLibrary.length + 1];
- for (int i = 0; i < filterLibrary.length; i++) {
- newFilterLibrary[i] = filterLibrary[i];
- }
+ InputFilter[] newFilterLibrary = Arrays.copyOf(filterLibrary, filterLibrary.length + 1);
newFilterLibrary[filterLibrary.length] = filter;
filterLibrary = newFilterLibrary;
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java Wed May 10 14:27:20 2017
@@ -18,6 +18,7 @@ package org.apache.coyote.http11;
import java.io.IOException;
import java.nio.ByteBuffer;
+import java.util.Arrays;
import org.apache.coyote.ActionCode;
import org.apache.coyote.OutputBuffer;
@@ -134,10 +135,7 @@ public class Http11OutputBuffer implemen
*/
public void addFilter(OutputFilter filter) {
- OutputFilter[] newFilterLibrary = new OutputFilter[filterLibrary.length + 1];
- for (int i = 0; i < filterLibrary.length; i++) {
- newFilterLibrary[i] = filterLibrary[i];
- }
+ OutputFilter[] newFilterLibrary = Arrays.copyOf(filterLibrary, filterLibrary.length + 1);
newFilterLibrary[filterLibrary.length] = filter;
filterLibrary = newFilterLibrary;
Modified: tomcat/trunk/java/org/apache/jasper/runtime/PageContextImpl.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/runtime/PageContextImpl.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/runtime/PageContextImpl.java (original)
+++ tomcat/trunk/java/org/apache/jasper/runtime/PageContextImpl.java Wed May 10 14:27:20 2017
@@ -19,6 +19,7 @@ package org.apache.jasper.runtime;
import java.io.IOException;
import java.io.Writer;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
@@ -544,10 +545,7 @@ public class PageContextImpl extends Pag
public JspWriter pushBody(Writer writer) {
depth++;
if (depth >= outs.length) {
- BodyContentImpl[] newOuts = new BodyContentImpl[depth + 1];
- for (int i = 0; i < outs.length; i++) {
- newOuts[i] = outs[i];
- }
+ BodyContentImpl[] newOuts = Arrays.copyOf(outs, depth + 1);
newOuts[depth] = new BodyContentImpl(out);
outs = newOuts;
}
Modified: tomcat/trunk/java/org/apache/naming/factory/webservices/ServiceRefFactory.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/naming/factory/webservices/ServiceRefFactory.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/naming/factory/webservices/ServiceRefFactory.java (original)
+++ tomcat/trunk/java/org/apache/naming/factory/webservices/ServiceRefFactory.java Wed May 10 14:27:20 2017
@@ -21,6 +21,7 @@ import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
@@ -222,15 +223,11 @@ public class ServiceRefFactory implement
proxy.setPortComponentRef(portComponentRef);
// Instantiate service with proxy class
- Class<?>[] interfaces = null;
Class<?>[] serviceInterfaces = serviceInterfaceClass.getInterfaces();
- interfaces = new Class[serviceInterfaces.length + 1];
- for (int i = 0; i < serviceInterfaces.length; i++) {
- interfaces[i] = serviceInterfaces[i];
- }
-
+ Class<?>[] interfaces = Arrays.copyOf(serviceInterfaces, serviceInterfaces.length + 1);
interfaces[interfaces.length - 1] = javax.xml.rpc.Service.class;
+
Object proxyInstance = null;
try {
proxyInstance = Proxy.newProxyInstance(tcl, interfaces, proxy);
Modified: tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/SecurityCollection.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/SecurityCollection.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/SecurityCollection.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/SecurityCollection.java Wed May 10 14:27:20 2017
@@ -18,6 +18,7 @@ package org.apache.tomcat.util.descripto
import java.io.Serializable;
import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
import org.apache.tomcat.util.buf.UDecoder;
@@ -173,9 +174,7 @@ public class SecurityCollection extends
if (method == null)
return;
- String results[] = new String[methods.length + 1];
- for (int i = 0; i < methods.length; i++)
- results[i] = methods[i];
+ String[] results = Arrays.copyOf(methods, methods.length + 1);
results[methods.length] = method;
methods = results;
@@ -190,9 +189,7 @@ public class SecurityCollection extends
public void addOmittedMethod(String method) {
if (method == null)
return;
- String results[] = new String[omittedMethods.length + 1];
- for (int i = 0; i < omittedMethods.length; i++)
- results[i] = omittedMethods[i];
+ String[] results = Arrays.copyOf(omittedMethods, omittedMethods.length + 1);
results[omittedMethods.length] = method;
omittedMethods = results;
}
@@ -210,10 +207,7 @@ public class SecurityCollection extends
return;
String decodedPattern = UDecoder.URLDecode(pattern);
- String results[] = new String[patterns.length + 1];
- for (int i = 0; i < patterns.length; i++) {
- results[i] = patterns[i];
- }
+ String[] results = Arrays.copyOf(patterns, patterns.length + 1);
results[patterns.length] = decodedPattern;
patterns = results;
}
Modified: tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java Wed May 10 14:27:20 2017
@@ -226,9 +226,7 @@ public class SecurityConstraint extends
if (authenticatedUsers) {
authenticatedUsers = false;
- String results[] = new String[authRoles.length + 1];
- for (int i = 0; i < authRoles.length; i++)
- results[i] = authRoles[i];
+ String[] results = Arrays.copyOf(authRoles, authRoles.length + 1);
results[authRoles.length] = ROLE_ALL_AUTHENTICATED_USERS;
authRoles = results;
authConstraint = true;
@@ -260,9 +258,7 @@ public class SecurityConstraint extends
return;
}
- String results[] = new String[authRoles.length + 1];
- for (int i = 0; i < authRoles.length; i++)
- results[i] = authRoles[i];
+ String[] results = Arrays.copyOf(authRoles, authRoles.length + 1);
results[authRoles.length] = authRole;
authRoles = results;
authConstraint = true;
@@ -282,10 +278,7 @@ public class SecurityConstraint extends
collection.setCharset(getCharset());
- SecurityCollection results[] =
- new SecurityCollection[collections.length + 1];
- for (int i = 0; i < collections.length; i++)
- results[i] = collections[i];
+ SecurityCollection results[] = Arrays.copyOf(collections, collections.length + 1);
results[collections.length] = collection;
collections = results;
Modified: tomcat/trunk/java/org/apache/tomcat/util/digester/CallMethodRule.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/digester/CallMethodRule.java?rev=1794726&r1=1794725&r2=1794726&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/digester/CallMethodRule.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/digester/CallMethodRule.java Wed May 10 14:27:20 2017
@@ -159,9 +159,7 @@ public class CallMethodRule extends Rule
}
} else {
this.paramTypes = new Class[paramTypes.length];
- for (int i = 0; i < this.paramTypes.length; i++) {
- this.paramTypes[i] = paramTypes[i];
- }
+ System.arraycopy(paramTypes, 0, this.paramTypes, 0, this.paramTypes.length);
}
this.paramClassNames = null;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org