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