This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 11.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/11.0.x by this push: new da3c7d90fd Fix BZ 69429 - optimize getParameters() for zero parameters da3c7d90fd is described below commit da3c7d90fd437b8e846d43980f0190a50f2b69b4 Author: Mark Thomas <ma...@apache.org> AuthorDate: Mon Nov 4 16:09:22 2024 +0000 Fix BZ 69429 - optimize getParameters() for zero parameters --- java/org/apache/el/parser/AstMethodParameters.java | 12 ++++++++++-- webapps/docs/changelog.xml | 5 +++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/java/org/apache/el/parser/AstMethodParameters.java b/java/org/apache/el/parser/AstMethodParameters.java index 11a2ac24ca..d127deec9e 100644 --- a/java/org/apache/el/parser/AstMethodParameters.java +++ b/java/org/apache/el/parser/AstMethodParameters.java @@ -23,16 +23,24 @@ import java.util.List; import org.apache.el.lang.EvaluationContext; public final class AstMethodParameters extends SimpleNode { + + private static final Object[] EMPTY_OBJECT_ARRAY = new Object[0]; + public AstMethodParameters(int id) { super(id); } public Object[] getParameters(EvaluationContext ctx) { + int numChildren = this.jjtGetNumChildren(); + // Optimise simple case + if (numChildren == 0) { + return EMPTY_OBJECT_ARRAY; + } List<Object> params = new ArrayList<>(); - for (int i = 0; i < this.jjtGetNumChildren(); i++) { + for (int i = 0; i < numChildren; i++) { params.add(this.jjtGetChild(i).getValue(ctx)); } - return params.toArray(new Object[0]); + return params.toArray(EMPTY_OBJECT_ARRAY); } @Override diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index b642d85e2d..e9ba4b28be 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -303,6 +303,11 @@ <code>Enum</code> is encountered. Instead, resolve the value at runtime. Patch provided by John Engebretson. (markt) </fix> + <fix> + <bug>69429</bug>: Optimise EL evaluation of method parameters for + methods that do not accept any parameters. Patch provided by John + Engebretson. (markt) + </fix> </changelog> </subsection> <subsection name="Other"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org