On this page

Layered map that supports child scopes while memoizing lookups from parent scopes. Layers form a linked parent chain, so createChild is O(1) instead of copying a layer array per scope. A layer's Map is only allocated on its first own write, and lookup results are memoized into the nearest Map-bearing layer of the walk — read-only layers (most block scopes) stay allocation-free and share their parent's memoized entries.

new StackedMap(): StackedMap<K, V>
Returns:StackedMap<K, V>
Attributes
map:Map<K, InternalCell<V>>
parent:StackedMap<K, V>
size:number
Returns the number of visible keys after collapsing the stack.
asArray(): K[]
Returns:K[]

Returns the visible keys as an array after collapsing the stack.


asMap(): Map<K, Cell<V>>
Returns:Map<K, Cell<V>>

Returns the visible contents as a plain Map.


asPairArray(): [K, Cell<V>][]
Returns:[K, Cell<V>][]

Returns visible key/value pairs using the external representation.


asSet(): Set<K>
Returns:Set<K>

Returns the visible keys as a Set after collapsing the stack.


createChild(): StackedMap<K, V>
Returns:StackedMap<K, V>

Creates a child StackedMap that sees the current layers as its parent scope.


delete(item): void
Attributes
item:K
Returns:void

Deletes a key from the current view, either by removing it outright in the root layer or by recording a tombstone in child layers.


get(item): Cell<V>
Attributes
item:K
Returns:Cell<V>

Returns the visible value for a key, caching parent hits and misses in the nearest Map-bearing layer so repeated lookups (from this layer or any sibling below that layer) answer with a single probe.


has(item): boolean
Attributes
item:K
Returns:boolean

Checks whether a key exists in the current scope chain, caching any parent lookup result in the nearest Map-bearing layer.


set(item, value): void
Attributes
item:K
value:V
Returns:void

Stores a value in the current layer, preserving explicit undefined values with an internal marker.

Type:undefined | T

Type:T | typeof TOMBSTONE | typeof UNDEFINED_MARKER