You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Jochen Theodorou (Jira)" <ji...@apache.org> on 2026/08/28 14:30:00 UTC
[jira] [Created] (GROOVY-12317) Composable dispatch for indy
Jochen Theodorou created GROOVY-12317:
-----------------------------------------
Summary: Composable dispatch for indy
Key: GROOVY-12317
URL: https://issues.apache.org/jira/browse/GROOVY-12317
Project: Groovy
Issue Type: Improvement
Reporter: Jochen Theodorou
Right now Groovy gains more and more helper methods that are essentially a semantic dispatcher with a dynamic method invocation as result. The problem is those final calls are not cached.
Dynamic Call (indy + gurads + switchpoints + caching) --> Helper Method --> Dynamic Call (reselect every time + no caching)
clear candidates are
ResourceGroovyMethods#notFiltered(File, Object, Object, Object, Object, Object)
ParallelCollectionExtensions#grepParallel(Collection, Object)
FormatHelper#tryGroovyToString(Object)
DefaultTypeTransformation#castToBooleanFallback(Object)
InvokerHelper#unaryMinus(Object)
InvokerHelper#unaryPlus(Object)
ObjectUtil#cloneObject(Object)
GString#invokeMethod(String, Object)
possible further candidates are
StringGroovyMethods#plus(CharSequence, Object)
StringGroovyMethods#minus(CharSequence, Object)
StringGroovyMethods#plus(Number, String)
StringGroovyMethods#asType(String, Class)
StringGroovyMethods#asType(GString, Class)
ArrayGroovyMethods#asType(Object[], Class)
ResourceGroovyMethods#asType(File, Class)
The method IndyCompoundAssign#resolve(CacheableCallSite, Class<?>, String, Object[]) could give inspiration here, but the intention of the issue is a more general mechanism that works like this:
indy selects method -> method returns continuation object -> indy continues with the object -> indy binds result -> cached calls go through this without asking the method again.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)