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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org