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
{{ message }}
Repository navigation
Commit 0f1ad6e
Browse filesBrowse the repository at this point in the historyBrowse files
Keep a single memoization layer for located reflections
Located reflections were cached twice - by MemoizingReflector (keyed
by name) and again by MemoizingSourceLocator (keyed by identifier),
pinning every reflection object graph in memory twice per worker
process.
The locator-level cache could not simply be dropped: created
reflections capture the reflector passed to
SourceLocator::locateIdentifier() and resolve parent classes,
interfaces and prototypes through it, bypassing MemoizingReflector
entirely - the memoizing locator was the only cache absorbing those
internal lookups. MemoizingReflector now locates identifiers itself
instead of wrapping DefaultReflector, so created reflections capture
the memoizing reflector and route internal lookups through the same
name-keyed cache. The MemoizingSourceLocator wrappers are removed
along with the cache.memoizingSourceLocatorEntriesCountMax parameter
and the originalBetterReflectionReflector service.
The stub validator container relied on the removed locator wrapper as
its only memoization, so it now overrides betterReflectionSourceLocator
with the stub source locator instead of swapping reflectors.
In self-analysis this reduces total worker peak memory
from ~2.5 GB to ~2.1 GB with unchanged elapsed time.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017DjgMHgfvwhD4ogdTaRtLp
0 commit comments