You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2026/02/04 14:04:15 UTC

(groovy) branch GROOVY-7785 updated: Trivial refactor

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 <su...@apache.org>
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() + "\":");