Skip to content

Write helpers into module bytecode directly - #12134

Draft
sarahchen6 wants to merge 1 commit into
sarahchen6/infer-helper-classes-pt-1from
sarahchen6/use-array
Draft

Write helpers into module bytecode directly#12134
sarahchen6 wants to merge 1 commit into
sarahchen6/infer-helper-classes-pt-1from
sarahchen6/use-array

Conversation

@sarahchen6

@sarahchen6 sarahchen6 commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

What Does This Do

Write the build-time-resolved helper list directly into each module's helperClassNames() bytecode. The transformer will now read helper class names directly instead of needing to load the $Muzzle class.

Motivation

Without this change, the $Muzzle side class is loaded eagerly to get the helper class names, negatively affecting startup time. Instead we can write the helpers directly into the bytecode and avoid loading the muzzle class.

Additional Notes

This is built off of #12059 and offers an alternative to #12116 in addressing the startup time issues. The changes here are more minimal, but we are rewriting the module bytecode in place.

Contributor Checklist

Jira ticket: [PROJ-IDENT]

@datadog-official

datadog-official Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

🎯 Code Coverage (details)
Patch Coverage: 0.00%
Overall Coverage: 57.79% (-0.02%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 3dc6d89 | Docs | Datadog PR Page | Give us feedback!

@dd-octo-sts

dd-octo-sts Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

🟡 Java Benchmark SLOs — Performance SLO warning (near threshold)

Suite Status
Startup 🟡 warning

SLO thresholds are defined here based on automatically generated metrics. A warning is raised when results are within 5% of the threshold.

PR vs. master results
Scenario Candidate master Δ (95% CI of mean)
startup:insecure-bank:iast:Agent 14.04 s 14.00 s [-0.4%; +1.0%] (no difference)
startup:insecure-bank:tracing:Agent 12.93 s 13.04 s [-1.6%; -0.1%] (maybe better)
startup:petclinic:appsec:Agent 16.95 s 17.28 s [-6.2%; +2.4%] (no difference)
startup:petclinic:iast:Agent 16.78 s 17.57 s [-8.6%; -0.4%] (maybe better)
startup:petclinic:profiling:Agent 17.32 s 17.47 s [-1.9%; +0.2%] (no difference)
startup:petclinic:sca:Agent 17.37 s 17.34 s [-1.0%; +1.3%] (no difference)
startup:petclinic:tracing:Agent 16.67 s 16.83 s [-2.0%; +0.2%] (no difference)

Commit: 3dc6d899 · CI Pipeline · Benchmarking Platform UI


Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion.

@amarziali

Copy link
Copy Markdown
Contributor

It looks way better in terms of startup. As discussed a possible improvement is to write it deparately from the muzzle plugin still reusing part of its logic for the class dependency find

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants