# Package org.codehaus.groovy.runtime.callsite

package org.codehaus.groovy.runtime.callsite
Classic (non-`invokedynamic`) call-site caching.

Primary purpose (GROOVY-11158): preserve runtime binary compatibility for classes compiled by Groovy 4 and Groovy 5 (and by earlier releases that always used classic call sites). Those classes link against `CallSiteArray` and `CallSite`; with this optional module on the classpath they must still load and execute on Groovy 6. The public linkage surface of those types is stable for that reason.

The same types also support compiling with `indy` disabled. Groovy 6 core uses invokedynamic for new compilation by default and does not depend on this package. Add `groovy-callsite` only when classic bytecode must still be produced or executed.

Prefer invokedynamic call sites for new code. This entire package is planned for deprecation/removal in a future Groovy version.

Since:
  1.5 (relocated to the `groovy-callsite` module in 6.0)

- Related Packages
  Package
  Description
  org.codehaus.groovy.runtime
  Runtime classes for Groovy - whether the dynamic interpreter is being used, the compiler or the bytecode generator.
- Class
  Description
  AbstractCallSite
  Base class for all classic (non-`invokedynamic`) call sites.
  BooleanClosureForMapPredicate<K,V>
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `BooleanClosureForMapPredicate` instead.
  BooleanClosurePredicate<T>
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `BooleanClosurePredicate` instead.
  BooleanClosureWrapper
  Deprecated, for removal: This API element is subject to removal in a future version.
  Use `BooleanClosureWrapper` instead.
  BooleanReturningMethodInvoker
  Deprecated, for removal: This API element is subject to removal in a future version.
  CachedMethodCallSites
  Creates optimized call sites for `CachedMethod` instances.
  CallSite
  Classic (non-`invokedynamic`) call site.
  CallSiteArray
  Array of classic (non-`invokedynamic`) call sites for a compiled class.
  CallSiteClassLoader
  Class loader used when generating specialized classic call-site classes.
  CallSiteGenerator
  Generates specialized call-site classes for the classic (non-indy) call-site cache.
  ConstructorMetaClassSite
  ConstructorMetaMethodSite
  Call site for invoking static methods metaclass - cached method - not cached
  ConstructorSite
  ConstructorSite.ConstructorSiteNoUnwrap
  Call site where we know there is no need to unwrap arguments
  ConstructorSite.ConstructorSiteNoUnwrapNoCoerce
  Call site where we know there is no need neither unwrap nor coerce arguments
  ConstructorSite.NoParamSite
  ConstructorSite.NoParamSiteInnerClass
  GetEffectivePogoFieldSite
  GetEffectivePojoPropertySite
  MetaClassCallSites
  Builds classic (non-indy) call sites for a `MetaClassImpl`.
  MetaClassConstructorSite
  Call site for constructor metaclass - cached method - not cached
  MetaClassSite
  Call site which holds reference to metaclass.
  MetaMethodSite
  Call site which caches meta method
  NullCallSite
  PerInstancePojoMetaClassSite
  PlainObjectMetaMethodSite
  Plain ordinary object call site metaclass - cached method - cached
  PogoGetPropertySite
  PogoInterceptableSite
  Call site for GroovyInterceptable
  PogoMetaClassGetPropertySite
  PogoMetaClassSite
  PogoMetaMethodSite
  POGO call site metaclass - cached method - cached
  PogoMetaMethodSite.PogoCachedMethodSite
  PogoMetaMethodSite.PogoCachedMethodSiteNoUnwrap
  PogoMetaMethodSite.PogoCachedMethodSiteNoUnwrapNoCoerce
  PogoMetaMethodSite.PogoMetaMethodSiteNoUnwrap
  Call site where we know there is no need to unwrap arguments
  PogoMetaMethodSite.PogoMetaMethodSiteNoUnwrapNoCoerce
  Call site where we know there is no need neither unwrap nor coerce arguments
  PojoMetaClassGetPropertySite
  PojoMetaClassSite
  POJO call site metaclass - cached method - not cached
  PojoMetaMethodSite
  POJO call site metaclass - cached method - cached
  PojoMetaMethodSite.PojoCachedMethodSite
  PojoMetaMethodSite.PojoCachedMethodSiteNoUnwrap
  PojoMetaMethodSite.PojoCachedMethodSiteNoUnwrapNoCoerce
  PojoMetaMethodSite.PojoMetaMethodSiteNoUnwrap
  Call site where we know there is no need to unwrap arguments
  PojoMetaMethodSite.PojoMetaMethodSiteNoUnwrapNoCoerce
  Call site where we know there is no need neither unwrap nor coerce arguments
  StaticMetaClassSite
  Call site for invoking static methods metaclass - cached method - not cached
  StaticMetaMethodSite
  POJO call site metaclass - cached method - cached
  StaticMetaMethodSite.StaticMetaMethodSiteNoUnwrap
  Call site where we know there is no need to unwrap arguments
  StaticMetaMethodSite.StaticMetaMethodSiteNoUnwrapNoCoerce
  Call site where we know there is no need neither unwrap nor coerce arguments