You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tracking issue for direct-call lowering — lifting the rt.LookupVar → Var.Deref → rt.InvokeValue trampoline into direct Go calls in the -tags gogen_ir lowered tree. Sub-issue of #258. Reconciled against main @ d4c36cf2 (#251), 2026-06-19.
Slice 2 — native-module cross-ns direct calls (branch feat/native-direct-calls, ticket lg-dq58). Seeds *lowered-registry* from (rt/native-modules) and emits the Go imports so the dormant :native? path activates end-to-end. Eliminates 94 seq trampolines → corefns.Seq. Perf-neutral (these native calls are cold). Implemented on-branch (3 commits); needs rebase onto current main + bundle regen.
Slice 3 — global-lowered-registry: hot cross-ns lowered direct calls (planned follow-on, named in the lg-dq58 commit). Targets the hot trampolines — cross-ns calls into lowered licm/typeinfer/build. This is where the actual perf win is; Slice 2 deliberately leaves it.
Adjacent (not filed here)
Lambda lifting — queued after direct-call per the roadmap; distinct optimization, no branch yet.
Structured Go emission (ir.structurize) is already merged in main — lower-body is structured-first (if/for/break/continue for reducible CFGs) and falls back to the goto emitter when structurize reports :fallbacks > 0. It is the proper-emission mechanism, not pending direct-call work. Its residual fallbacks are exactly the gogen_ir: close ir.structurize fallbacks for the 18 func-decl-bail defns #263 bucket (driving structurize :fallbacks → 0).
Tracking issue for direct-call lowering — lifting the
rt.LookupVar → Var.Deref → rt.InvokeValuetrampoline into direct Go calls in the-tags gogen_irlowered tree. Sub-issue of #258. Reconciled againstmain@d4c36cf2(#251), 2026-06-19.Already in main
emit-typed-direct-call,resolve-call-entry(handles:native?),lookup-direct-callable,*lowered-registry*,*native-imports-used*(lower_go.lg/pipeline.lg).Pending slices (sub-issues)
feat/native-direct-calls, ticketlg-dq58). Seeds*lowered-registry*from(rt/native-modules)and emits the Go imports so the dormant:native?path activates end-to-end. Eliminates 94seqtrampolines →corefns.Seq. Perf-neutral (these native calls are cold). Implemented on-branch (3 commits); needs rebase onto current main + bundle regen.licm/typeinfer/build. This is where the actual perf win is; Slice 2 deliberately leaves it.Adjacent (not filed here)
ir.structurize) is already merged in main —lower-bodyis structured-first (if/for/break/continue for reducible CFGs) and falls back to the goto emitter whenstructurizereports:fallbacks > 0. It is the proper-emission mechanism, not pending direct-call work. Its residual fallbacks are exactly the gogen_ir: close ir.structurize fallbacks for the 18 func-decl-bail defns #263 bucket (drivingstructurize :fallbacks→ 0).Superseded branches (archive, not filed)
feat/direct-call-intra-ns→ landed as feat(lower-go): intra-namespace direct-call lowering (slice 1) #168.direct-call-boundary→ dormant origin scaffold; superseded byfeat/native-direct-calls.ir-exploration→ 54-commit accumulator; mine for tests/notes, not a single issue.