-
Notifications
You must be signed in to change notification settings - Fork 12
Comparing changes
Open a pull request
base repository: ethdebug/format
base: main
head repository: ethdebug/format
compare: transform-context-backup
- 7 commits
- 38 files changed
- 1 contributor
Commits on Jul 16, 2026
-
format: add the transform context for compiler optimizations
Introduce the `transform` context: a flat sibling key on an instruction listing the optimization passes (fold, coalesce, tailcall, inline) the compiler applied to it, so a debugger can distinguish compiler-synthesized code from the source the user wrote. Adds the schema, the format TypeScript type, and the spec page, and registers the context page in the docs schema index.
Configuration menu - View commit details
-
Copy full SHA for 73d57e4 - Browse repository at this point
Copy the full SHA 73d57e4View commit details -
tailcall: emit, render, and document the tail-call transform
Emit `transform: ["tailcall"]` on the TCO back-edge JUMP, alongside the invoke/return pair it already carries, so a debugger sees the pair as a tail-call-optimized back-edge rather than a real frame push/pop and does not invent a spurious frame. Render it in the tracer drawer — an optimizer-level (O0-O3) selector and a tail-call-aware call stack — and document it with a tracing example and a walkthrough homed in the trace playground. Introduces the shared `Ir.Utils.addTransform` helper — the fold, coalesce, and inline emitters all route through it — and the transform-emission test file (`transform-contexts.test.ts`, with the `countTransform` helper), covering the tailcall marker: absent at O0/O1, present at O2/O3.
Configuration menu - View commit details
-
Copy full SHA for 962c5aa - Browse repository at this point
Copy the full SHA 962c5aaView commit details -
bugc: emit the fold transform on constant folding
Mark constant-folded values with `transform: ["fold"]` through a shared `addTransform` helper, so the tracer can show a value as a compile-time-evaluated constant rather than source. The marker composes with later passes into a multiset (e.g. `["fold", "coalesce"]`).
Configuration menu - View commit details
-
Copy full SHA for 4fc242c - Browse repository at this point
Copy the full SHA 4fc242cView commit details -
bugc: emit the coalesce transform on read-write merging
Mark the SHL/OR field-packing sequence produced by read-write merging with `transform: ["coalesce"]`, so a packed-storage write reads as compiler-synthesized rather than source the user wrote. Composes with a folded value into `["fold", "coalesce"]`.
Configuration menu - View commit details
-
Copy full SHA for 5640bfd - Browse repository at this point
Copy the full SHA 5640bfdView commit details -
inline: spec, compiler pass, tracer reconstruction, and examples
Add the function-inlining transform end to end: - spec the inlined-call virtual-activation contract — push/pop pairing via the virtual invoke/return versus the per-instruction `inline` membership marker; - add the bugc inlining pass (level 2): splice eligible leaf callees into their call sites, emit `transform: ["inline"]` on the spliced body, and bracket it with a virtual invoke/return; bracket those boundary ops in evmgen so the activation nests correctly; - reconstruct the inline virtual activations in the tracer's call stack; - add the inlining showcase examples and the trace-playground section.
Configuration menu - View commit details
-
Copy full SHA for db92840 - Browse repository at this point
Copy the full SHA db92840View commit details -
format: correlate activations with an activation identifier
Correlate activations with an `activation` identifier on invoke, return, and revert: the invoke that opens an activation and the return or revert that closes it carry the same value, so a debugger pairs a call with its return independent of trace order. It lives inside the invoke/return/revert object, keeping a tail call's two facts flat without a `gather`.
Configuration menu - View commit details
-
Copy full SHA for c00252e - Browse repository at this point
Copy the full SHA c00252eView commit details -
web: surface optimizer transforms in the tracer instruction list
Show the tailcall and inline transform annotations inline in the tracer's instruction list, so the optimizer passes applied to each instruction are visible as you step through the trace.
Configuration menu - View commit details
-
Copy full SHA for c8355db - Browse repository at this point
Copy the full SHA c8355dbView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff main...transform-context-backup