This is an automated email from the ASF dual-hosted git repository.

paulk-asert pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/groovy-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 28dd9f2  updated with recent changes for GROOVY-12151
28dd9f2 is described below

commit 28dd9f258b740217c4177d3bbe547d0abb1ca1eb
Author: Paul King <[email protected]>
AuthorDate: Thu Jul 16 14:54:22 2026 +1000

    updated with recent changes for GROOVY-12151
---
 site/src/site/wiki/GEP-27.adoc | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/site/src/site/wiki/GEP-27.adoc b/site/src/site/wiki/GEP-27.adoc
index e7dff31..94a4bed 100644
--- a/site/src/site/wiki/GEP-27.adoc
+++ b/site/src/site/wiki/GEP-27.adoc
@@ -493,9 +493,11 @@ diagnostics. The two headline capabilities are done:
   constant bundle lazily on first use, and each literal's parameter-type 
`Class[]` is a
   constant-dynamic resolved once per site. The whole chain is ordinary, 
JIT-friendly bytecode — no
   reflection, and no per-instance `MethodHandle` (not constant-foldable, hence 
many times slower).
-  Measured with JMH against the generated classes it replaces (same build, 
both compilations):
-  capturing shapes run **1.4–1.9× faster packed** — the win holding under 
megamorphic dispatch across
-  many classes — while the tightest non-capturing `collect` trails at ~0.6×; 
on Grails-shaped
+  Measured with JMH against the generated classes it replaces (same build, 
both compilations,
+  re-measured after the fixed-arity family and dispatch-semantics hardening): 
capturing shapes run
+  **1.4× or better packed**, mono and megamorphic alike (individual runs have 
reached 1.9× against
+  slower classed baselines), while the tightest non-capturing `collect` trails 
at 0.5–0.7× — a
+  hypersensitive-inlining micro-shape whose day-to-day tuning band that is; on 
Grails-shaped
   in-situ workloads (domain pipelines, validation cycles) the blend nets 
**+17–23% packed** with
   identical outputs, so the adverse micro-shape dilutes out under real work.
 * *MOP transparency* — the direct dispatch path is semantically invisible: it 
is taken only when the
@@ -911,10 +913,11 @@ the compatibility valve while tools are updated.
   bytecode; the per-arity tables pass the receiver, captures and arguments as 
plain parameters, so
   the hot shapes allocate no argument array at all, and allocation sits at or 
below the
   closure-class baseline on capturing shapes.
-* Measured with JMH against the generated classes on the same build: capturing 
shapes 1.4–1.9×
-  faster packed (holding under megamorphic dispatch); tight non-capturing 
`collect` ~0.6× — the
-  MOP-transparency guard's loop-invariant checks, hoisted to zero when the 
chain inlines. On
-  Grails-shaped in-situ workloads the blend nets +17–23% packed with identical 
outputs.
+* Measured with JMH against the generated classes on the same build: capturing 
shapes 1.4× or
+  better packed (holding under megamorphic dispatch); tight non-capturing 
`collect` 0.5–0.7× — the
+  MOP-transparency guard's loop-invariant checks, hoisted when the chain 
inlines, on a shape whose
+  ratio swings with inline-budget details. On Grails-shaped in-situ workloads 
the blend nets
+  +17–23% packed with identical outputs.
 * MOP transparency has the same cost model as the classic call-site caches: 
one latched-boolean and
   one category-counter read decide between direct dispatch and the full 
`invokeMethod` route, so
   interception, categories and `respondsTo` behave identically to generated 
closure classes.

Reply via email to