This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch GROOVY-7785
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/GROOVY-7785 by this push:
new b8e01b53a0 Trivial refactor
b8e01b53a0 is described below
commit b8e01b53a0faa58a77d6d92c7be3e7b5f98c57ce
Author: Daniel Sun <[email protected]>
AuthorDate: Wed Feb 4 23:03:34 2026 +0900
Trivial refactor
---
.../groovy/classgen/asm/indy/InvokeDynamicWriter.java | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git
a/src/main/java/org/codehaus/groovy/classgen/asm/indy/InvokeDynamicWriter.java
b/src/main/java/org/codehaus/groovy/classgen/asm/indy/InvokeDynamicWriter.java
index 74baaac51b..9b3ad71f6f 100644
---
a/src/main/java/org/codehaus/groovy/classgen/asm/indy/InvokeDynamicWriter.java
+++
b/src/main/java/org/codehaus/groovy/classgen/asm/indy/InvokeDynamicWriter.java
@@ -132,23 +132,18 @@ public class InvokeDynamicWriter extends InvocationWriter
{
// Collect chain of simple method calls that can use indy optimization
Deque<MethodCallExpression> chain = new ArrayDeque<>();
Expression current = receiver;
- while (current instanceof MethodCallExpression mce
+ for (; current instanceof MethodCallExpression mce
&& !mce.isSpreadSafe() && !mce.isImplicitThis()
&& !isSuperExpression(mce.getObjectExpression())
- && !isThisExpression(mce.getObjectExpression())) {
+ && !isThisExpression(mce.getObjectExpression()); current =
mce.getObjectExpression()) {
String name = getMethodName(mce.getMethod());
if (name == null || "call".equals(name)) break; // dynamic name or
functional interface call
chain.push(mce);
- current = mce.getObjectExpression();
}
- if (chain.isEmpty()) {
- receiver.visit(controller.getAcg());
- return;
- }
-
- current.visit(controller.getAcg());
AsmClassGenerator acg = controller.getAcg();
+ current.visit(acg);
+
while (!chain.isEmpty()) {
MethodCallExpression call = chain.pop();
acg.onLineNumber(call, "visitMethodCallExpression: \"" +
call.getMethod() + "\":");